knife-azure 1.0.0 → 1.0.2

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.
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>