knife-azure 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/{readme.rdoc → README.rdoc} +68 -26
  2. data/lib/azure/connection.rb +3 -1
  3. data/lib/azure/deploy.rb +3 -0
  4. data/lib/azure/host.rb +2 -2
  5. data/lib/azure/image.rb +2 -2
  6. data/lib/azure/rest.rb +8 -3
  7. data/lib/azure/role.rb +1 -1
  8. data/lib/azure/storageaccount.rb +87 -0
  9. data/lib/chef/knife/azure_base.rb +19 -17
  10. data/lib/chef/knife/azure_image_list.rb +13 -10
  11. data/lib/chef/knife/azure_server_create.rb +45 -13
  12. data/lib/knife-azure/version.rb +1 -1
  13. metadata +208 -178
  14. data/Gemfile +0 -22
  15. data/Guardfile +0 -8
  16. data/Rakefile +0 -51
  17. data/knife-azure.gemspec +0 -106
  18. data/spec/functional/deploys_test.rb +0 -39
  19. data/spec/functional/host_test.rb +0 -22
  20. data/spec/functional/images_list_test.rb +0 -44
  21. data/spec/functional/role_test.rb +0 -16
  22. data/spec/integration/role_lifecycle_test.rb +0 -60
  23. data/spec/spec_helper.rb +0 -41
  24. data/spec/unit/assets/create_deployment.xml +0 -37
  25. data/spec/unit/assets/create_deployment_in_progress.xml +0 -1
  26. data/spec/unit/assets/create_host.xml +0 -7
  27. data/spec/unit/assets/create_role.xml +0 -54
  28. data/spec/unit/assets/list_deployments_for_service000.xml +0 -126
  29. data/spec/unit/assets/list_deployments_for_service001.xml +0 -166
  30. data/spec/unit/assets/list_deployments_for_service002.xml +0 -1
  31. data/spec/unit/assets/list_deployments_for_service003.xml +0 -1
  32. data/spec/unit/assets/list_disks.xml +0 -1
  33. data/spec/unit/assets/list_hosts.xml +0 -1
  34. data/spec/unit/assets/list_images.xml +0 -1
  35. data/spec/unit/assets/post_success.xml +0 -6
  36. data/spec/unit/deploys_list_spec.rb +0 -55
  37. data/spec/unit/disks_spec.rb +0 -44
  38. data/spec/unit/hosts_spec.rb +0 -55
  39. data/spec/unit/images_spec.rb +0 -35
  40. data/spec/unit/query_azure_mock.rb +0 -69
  41. data/spec/unit/roles_create_spec.rb +0 -82
  42. data/spec/unit/roles_list_spec.rb +0 -32
data/Gemfile DELETED
@@ -1,22 +0,0 @@
1
- source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
-
6
- gemspec
7
- #gem "chef", "~> 0.10.8"
8
-
9
- # Add dependencies to develop your gem here.
10
- # Include everything needed to run rake, tests, features, etc.
11
- group :development do
12
- gem "rspec", "~> 2.8.0"
13
- gem "rake"
14
- gem "rdoc", "~> 3.12"
15
- gem "bundler"
16
- gem "guard-rspec"
17
- gem "libnotify"
18
- gem "rubygems-bundler", "~> 0.2.8"
19
- gem "interactive_editor"
20
- gem "equivalent-xml", "~> 0.2.9"
21
- end
22
-
data/Guardfile DELETED
@@ -1,8 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- guard :rspec, :version => 2 do
5
- watch(%r{^spec/.+_spec\.rb$})
6
- watch(%r{^lib/(.+)\.rb$}) # { |m| "spec/lib/#{m[1]}_spec.rb" }
7
- watch('spec/spec_helper.rb') { "spec" }
8
- end
data/Rakefile DELETED
@@ -1,51 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- spec = eval(File.read("knife-azure.gemspec"))
15
-
16
- require 'rubygems/package_task'
17
-
18
- Gem::PackageTask.new(spec) do |pkg|
19
- pkg.gem_spec = spec
20
- end
21
-
22
- require 'rspec/core'
23
- require 'rspec/core/rake_task'
24
- RSpec::Core::RakeTask.new(:spec) do |spec|
25
- spec.pattern = FileList['spec/unit/**/*_spec.rb']
26
- end
27
-
28
- RSpec::Core::RakeTask.new(:functional) do |spec|
29
- spec.pattern = FileList['spec/functional/**/*_test.rb']
30
- end
31
-
32
- RSpec::Core::RakeTask.new(:integration) do |spec|
33
- spec.pattern = FileList['spec/integration/**/*_test.rb']
34
- end
35
-
36
- RSpec::Core::RakeTask.new(:rcov) do |spec|
37
- spec.pattern = 'spec/**/*_spec.rb'
38
- spec.rcov = true
39
- end
40
-
41
- task :default => :spec
42
-
43
- require 'rdoc/task'
44
- Rake::RDocTask.new do |rdoc|
45
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
-
47
- rdoc.rdoc_dir = 'rdoc'
48
- rdoc.title = "knife-azure #{version}"
49
- rdoc.rdoc_files.include('README*')
50
- rdoc.rdoc_files.include('lib/**/*.rb')
51
- end
data/knife-azure.gemspec DELETED
@@ -1,106 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + '/lib')
2
- require 'knife-azure/version'
3
-
4
- Gem::Specification.new do |s|
5
- s.name = "knife-azure"
6
- s.version = Knife::Azure::VERSION
7
-
8
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.authors = ["Barry Davis"]
10
- s.date = "2012-06-06"
11
- s.summary = "A plugin to Opscode knife for creating instances on the Microsoft Azure platform"
12
- s.description = s.summary
13
- s.email = "oss@opscode.com"
14
- s.licenses = ["Apache 2.0"]
15
- s.extra_rdoc_files = [
16
- "LICENSE"
17
- ]
18
- s.files = [
19
- "Gemfile",
20
- "Guardfile",
21
- "LICENSE",
22
- "Rakefile",
23
- "knife-azure.gemspec",
24
- "lib/azure/connection.rb",
25
- "lib/azure/deploy.rb",
26
- "lib/azure/disk.rb",
27
- "lib/azure/host.rb",
28
- "lib/azure/image.rb",
29
- "lib/azure/rest.rb",
30
- "lib/azure/role.rb",
31
- "lib/azure/utility.rb",
32
- "lib/chef/knife/azure_base.rb",
33
- "lib/chef/knife/azure_image_list.rb",
34
- "lib/chef/knife/azure_server_create.rb",
35
- "lib/chef/knife/azure_server_delete.rb",
36
- "lib/chef/knife/azure_server_describe.rb",
37
- "lib/chef/knife/azure_server_list.rb",
38
- "lib/knife-azure/version.rb",
39
- "readme.rdoc",
40
- "spec/functional/deploys_test.rb",
41
- "spec/functional/host_test.rb",
42
- "spec/functional/images_list_test.rb",
43
- "spec/functional/role_test.rb",
44
- "spec/integration/role_lifecycle_test.rb",
45
- "spec/spec_helper.rb",
46
- "spec/unit/assets/create_deployment.xml",
47
- "spec/unit/assets/create_deployment_in_progress.xml",
48
- "spec/unit/assets/create_host.xml",
49
- "spec/unit/assets/create_role.xml",
50
- "spec/unit/assets/list_deployments_for_service000.xml",
51
- "spec/unit/assets/list_deployments_for_service001.xml",
52
- "spec/unit/assets/list_deployments_for_service002.xml",
53
- "spec/unit/assets/list_deployments_for_service003.xml",
54
- "spec/unit/assets/list_disks.xml",
55
- "spec/unit/assets/list_hosts.xml",
56
- "spec/unit/assets/list_images.xml",
57
- "spec/unit/assets/post_success.xml",
58
- "spec/unit/deploys_list_spec.rb",
59
- "spec/unit/disks_spec.rb",
60
- "spec/unit/hosts_spec.rb",
61
- "spec/unit/images_spec.rb",
62
- "spec/unit/query_azure_mock.rb",
63
- "spec/unit/roles_create_spec.rb",
64
- "spec/unit/roles_list_spec.rb"
65
- ]
66
- s.homepage = "http://github.com/opscode/knife-azure"
67
- s.require_paths = ["lib"]
68
- s.rubygems_version = "1.8.23"
69
-
70
- if s.respond_to? :specification_version then
71
- s.specification_version = 3
72
-
73
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
74
- s.add_runtime_dependency(%q<knife-azure>, [">= 0"])
75
- s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
76
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
77
- s.add_development_dependency(%q<bundler>, [">= 0"])
78
- s.add_development_dependency(%q<guard-rspec>, [">= 0"])
79
- s.add_development_dependency(%q<libnotify>, [">= 0"])
80
- s.add_development_dependency(%q<rubygems-bundler>, ["~> 0.2.8"])
81
- s.add_development_dependency(%q<interactive_editor>, [">= 0"])
82
- s.add_development_dependency(%q<equivalent-xml>, ["~> 0.2.9"])
83
- else
84
- s.add_dependency(%q<knife-azure>, [">= 0"])
85
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
86
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
87
- s.add_dependency(%q<bundler>, [">= 0"])
88
- s.add_dependency(%q<guard-rspec>, [">= 0"])
89
- s.add_dependency(%q<libnotify>, [">= 0"])
90
- s.add_dependency(%q<rubygems-bundler>, ["~> 0.2.8"])
91
- s.add_dependency(%q<interactive_editor>, [">= 0"])
92
- s.add_dependency(%q<equivalent-xml>, ["~> 0.2.9"])
93
- end
94
- else
95
- s.add_dependency(%q<knife-azure>, [">= 0"])
96
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
97
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
98
- s.add_dependency(%q<bundler>, [">= 0"])
99
- s.add_dependency(%q<guard-rspec>, [">= 0"])
100
- s.add_dependency(%q<libnotify>, [">= 0"])
101
- s.add_dependency(%q<rubygems-bundler>, ["~> 0.2.8"])
102
- s.add_dependency(%q<interactive_editor>, [">= 0"])
103
- s.add_dependency(%q<equivalent-xml>, ["~> 0.2.9"])
104
- end
105
- end
106
-
@@ -1,39 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "deploys" do
4
- before(:all) do
5
- @connection = Azure::Connection.new(TEST_PARAMS)
6
- @deploys = @connection.deploys.all
7
- end
8
-
9
- specify {@deploys.length.should be > 0}
10
- it 'each deployment should have values' do
11
- @deploys.each do |deploy|
12
- deploy.name.should_not be_nil
13
- deploy.status.should_not be_nil
14
- deploy.url.should_not be_nil
15
- deploy.roles.length.should be > 0
16
- end
17
- end
18
- it 'each role should have values' do
19
- @deploys.each do |deploy|
20
- Chef::Log.info '============================='
21
- Chef::Log.info 'hosted service: ' + deploy.hostedservicename + ' deployment: ' + deploy.name
22
- deploy.roles.each do |role|
23
- role.name.should_not be_nil
24
- role.status.should_not be_nil
25
- role.size.should_not be_nil
26
- role.ipaddress.should_not be_nil
27
- role.sshport.should_not be_nil
28
- role.sshipaddress.should_not be_nil
29
- Chef::Log.info '============================='
30
- Chef::Log.info 'role: ' + role.name
31
- Chef::Log.info 'status: ' + role.status
32
- Chef::Log.info 'size: ' + role.size
33
- Chef::Log.info 'ip address: ' + role.ipaddress
34
- Chef::Log.info 'ssh port: ' + role.sshport
35
- Chef::Log.info 'ssh ip address: ' + role.sshipaddress
36
- end
37
- end
38
- end
39
- end
@@ -1,22 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Connection" do
4
-
5
- before(:all) do
6
- @connection = Azure::Connection.new(TEST_PARAMS)
7
- @items = @connection.hosts.all
8
- end
9
-
10
- specify {@items.length.should be > 0}
11
- specify {@connection.hosts.exists("thisServiceShouldNotBeThere").should == false}
12
- specify{@connection.hosts.exists("service002").should == true}
13
- it "looking for a specific host" do
14
- foundNamedHost = false
15
- @items.each do |host|
16
- next unless host.name == "service002"
17
- foundNamedHost = true
18
- end
19
- foundNamedHost.should == true
20
- end
21
- end
22
-
@@ -1,44 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "Connection" do
4
-
5
- before(:all) do
6
- @connection = Azure::Connection.new(TEST_PARAMS)
7
- @items = @connection.images.all
8
- end
9
-
10
- it "should be contain images" do
11
- @items.length.should be > 1
12
- end
13
- it "each image should have all fields valid" do
14
- @items.each do |image|
15
- image.category.should_not be_nil
16
- image.label.should_not be_nil
17
- image.name.should_not be_nil
18
- image.os.should_not be_nil
19
- image.eula.should_not be_nil
20
- image.description.should_not be_nil
21
- end
22
- end
23
-
24
-
25
- # it "should get services" do
26
- # @demo.DemoGet
27
- # end
28
- # it "bad subscription should fail with ResourceNotFound" do
29
- # @demo.subscription = "ae2ff9b3-12b2-45cf-b58e-468bc7e29110xxxxx"
30
- #
31
- # expect{@demo.DemoGet}.to raise_error(RuntimeError, /ResourceNotFound/)
32
- # end
33
- # it "bad pem_path should fail with CertificateError" do
34
- # @demo.pem_file = ""
35
- #
36
- # expect{@demo.DemoGet}.to raise_error(OpenSSL::X509::CertificateError)
37
- # end
38
- # it "bad service_name should fail with " do
39
- # @demo.service_name = ""
40
- #
41
- # expect{@demo.DemoGet}.to raise_error(RuntimeError, /ResourceNotFound/)
42
- # end
43
- end
44
-
@@ -1,16 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe "roles" do
4
- before(:all) do
5
- @connection = Azure::Connection.new(TEST_PARAMS)
6
- @roles = @connection.roles.all
7
- end
8
-
9
- specify {@connection.roles.exists('notexist').should == false}
10
- specify {@connection.roles.exists('role126').should == true}
11
- it 'run through roles' do
12
- @connection.roles.roles.each do |role|
13
- role.name.should_not be_nil
14
- end
15
- end
16
- end
@@ -1,60 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- describe "role lifecycle" do
3
- Chef::Log.init()
4
- Chef::Log.level=:info
5
- before(:all) do
6
- include AzureSpecHelper
7
- connection_params = TEST_PARAMS
8
- @connection = Azure::Connection.new(connection_params)
9
- arbitrary = rand(1000) + 1
10
- @params = {
11
- :hosted_service_name=>'service002',
12
- :role_name=>'role' + arbitrary.to_s,
13
- :host_name=>'host' + arbitrary.to_s,
14
- :ssh_user=>'jetstream',
15
- :ssh_password=>'jetstream1!',
16
- :media_location_prefix=>'auxpreview104',
17
- :source_image=>'SUSE__OpenSUSE64121-03192012-en-us-15GB',
18
- :role_size=>'ExtraSmall'
19
- }
20
- end
21
- # ToFix - breaks because it does not refresh each role
22
- # within loop and does not know that it needs to delete
23
- # a deployment instead of a role when it gets down to
24
- # the last role in a deployment
25
- it 'delete everything, build out completely' do
26
- Chef::Log.info 'deleting any existing roles'
27
- @connection.roles.all.each do |role|
28
- Chef::Log.info 'deleting role' + role.name
29
- @connection.roles.delete role.name
30
- break
31
- end
32
-
33
- Chef::Log.info 'deleting any existing hosts'
34
- @connection.hosts.all.each do |host|
35
- Chef::Log.info 'deleting host' + host.name
36
- @connection.hosts.delete host.name
37
- end
38
-
39
- # create 5 new roles
40
- ['001', '002', '003', '004', '005'].each do |val|
41
- arbitrary = rand(1000) + 1
42
- @params[:role_name]='role' + val + arbitrary.to_s
43
- @params[:host_name]='host' + val
44
- Chef::Log.info 'creating a new role named ' + @params[:role_name]
45
- @connection.deploys.create(@params)
46
- end
47
-
48
- # refresh the roles list
49
- Chef::Log.info 'refreshing roles'
50
- @connection.roles.all
51
-
52
- # list the roles
53
- Chef::Log.info 'display roles'
54
- @connection.roles.roles.each do |role|
55
- Chef::Log.info role.name
56
- end
57
- end
58
- #specify {@connection.roles.exists(@params[:role_name]).should == true}
59
- #specify {@connection.roles.exists(@params[:role_name] + 'notexist').should == false}
60
- end
data/spec/spec_helper.rb DELETED
@@ -1,41 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- require 'rspec'
3
- require 'equivalent-xml'
4
- require 'chef'
5
- require 'chef/log'
6
-
7
- require 'azure/connection'
8
- require 'azure/rest'
9
- require 'azure/host'
10
- require 'azure/image'
11
- require 'azure/deploy'
12
- require 'azure/role'
13
- require 'azure/disk'
14
-
15
- require 'chef/knife/azure_server_list'
16
- require 'chef/knife/azure_server_delete'
17
- require 'chef/knife/azure_server_create'
18
- require 'chef/knife/azure_server_describe'
19
- require 'chef/knife/azure_image_list'
20
-
21
- def tmpFile filename
22
- tmpdir = 'tmp'
23
- Dir::mkdir tmpdir unless FileTest::directory?(tmpdir)
24
- tmpdir + '/' + filename
25
- end
26
-
27
- Chef::Log.init(tmpFile('debug.log'), 'daily')
28
- Chef::Log.level=:debug
29
-
30
- TEST_PARAMS = {
31
- :azure_subscription_id => "YOUR_SUBSCRIPTION_ID_HERE"
32
- :azure_pem_file => "AzureLinuxCert.pem",
33
- :azure_host_name => "management-preview.core.windows-int.net",
34
- :service_name => "hostedservices"
35
- }
36
-
37
- module AzureSpecHelper
38
- def readFile filename
39
- File.read(File.dirname(__FILE__) + "/unit/assets/#{filename}")
40
- end
41
- end
@@ -1,37 +0,0 @@
1
- <?xml version="1.0"?> <Deployment xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
2
- <Name>unknown_yet</Name>
3
- <DeploymentSlot>Production</DeploymentSlot>
4
- <Label>dW5rbm93bl95ZXQ=</Label>
5
- <RoleList>
6
- <Role i:type="PersistentVMRole">
7
- <RoleName>vm01</RoleName>
8
- <OsVersion i:nil="true"/>
9
- <RoleType>PersistentVMRole</RoleType>
10
- <ConfigurationSets>
11
- <ConfigurationSet i:type="LinuxProvisioningConfigurationSet">
12
- <ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType>
13
- <HostName>myVm</HostName>
14
- <UserName>jetstream</UserName>
15
- <UserPassword>jetstream1!</UserPassword>
16
- <DisableSshPasswordAuthentication>false</DisableSshPasswordAuthentication>
17
- </ConfigurationSet>
18
- <ConfigurationSet i:type="NetworkConfigurationSet">
19
- <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
20
- <InputEndpoints>
21
- <InputEndpoint>
22
- <LocalPort>22</LocalPort>
23
- <Name>SSH</Name>
24
- <Protocol>TCP</Protocol>
25
- </InputEndpoint>
26
- </InputEndpoints>
27
- </ConfigurationSet>
28
- </ConfigurationSets>
29
- <Label>dm0wMQ==</Label>
30
- <OSVirtualHardDisk>
31
- <MediaLink>http://auxpreview104imagestore.blob.core.azure-preview.com/os-disks/disk004Test</MediaLink>
32
- <SourceImageName>SUSE__OpenSUSE64121-03192012-en-us-15GB</SourceImageName>
33
- </OSVirtualHardDisk>
34
- <RoleSize>ExtraSmall</RoleSize>
35
- </Role>
36
- </RoleList>
37
- </Deployment>