knife-vcair 0.6.1
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.
- checksums.yaml +7 -0
 - data/.gitignore +89 -0
 - data/CHANGELOG.md +18 -0
 - data/Gemfile +4 -0
 - data/Guardfile +23 -0
 - data/LICENSE +202 -0
 - data/README.md +197 -0
 - data/Rakefile +35 -0
 - data/example.env +5 -0
 - data/install-linux-vcair-example.sh +22 -0
 - data/install-winrm-vcair-example.bat +36 -0
 - data/knife-vcair.gemspec +35 -0
 - data/lib/chef/knife/cloud/vcair_server_create_options.rb +73 -0
 - data/lib/chef/knife/cloud/vcair_service.rb +57 -0
 - data/lib/chef/knife/cloud/vcair_service_options.rb +77 -0
 - data/lib/chef/knife/vcair_helpers.rb +94 -0
 - data/lib/chef/knife/vcair_image_list.rb +51 -0
 - data/lib/chef/knife/vcair_ip_list.rb +59 -0
 - data/lib/chef/knife/vcair_network_list.rb +57 -0
 - data/lib/chef/knife/vcair_server_create.rb +231 -0
 - data/lib/chef/knife/vcair_server_delete.rb +34 -0
 - data/lib/chef/knife/vcair_server_list.rb +33 -0
 - data/lib/chef/knife/vcair_server_show.rb +37 -0
 - data/lib/chef/knife/vcair_vm_delete.rb +51 -0
 - data/lib/chef/knife/vcair_vm_list.rb +62 -0
 - data/lib/knife-vcair/version.rb +6 -0
 - data/spec/integration/config/knife.rb +9 -0
 - data/spec/integration/config/validation.pem +27 -0
 - data/spec/integration/vchs_spec.rb +108 -0
 - data/spec/spec_helper.rb +73 -0
 - data/spec/unit/lib/chef/knife/vcair_server_create_spec.rb +231 -0
 - data/spec/utils/knifeutils.rb +35 -0
 - data/spec/utils/matchers.rb +29 -0
 - metadata +257 -0
 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Author:: Matt Ray (<matt@getchef.com>)
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright:: Copyright (c) 2014 Chef Software, Inc.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # License:: Apache License, Version 2.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 7 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 13 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 14 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 15 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 16 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            require 'chef/knife/cloud/server/delete_options'
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'chef/knife/cloud/server/delete_command'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife/cloud/vcair_service'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'chef/knife/cloud/vcair_service_options'
         
     | 
| 
      
 23 
     | 
    
         
            +
            require 'chef/knife/vcair_helpers'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            class Chef
         
     | 
| 
      
 26 
     | 
    
         
            +
              class Knife
         
     | 
| 
      
 27 
     | 
    
         
            +
                class Cloud
         
     | 
| 
      
 28 
     | 
    
         
            +
                  class VcairVmDelete < ServerDeleteCommand
         
     | 
| 
      
 29 
     | 
    
         
            +
                    include ServerDeleteOptions
         
     | 
| 
      
 30 
     | 
    
         
            +
                    include VcairServiceOptions
         
     | 
| 
      
 31 
     | 
    
         
            +
                    include VcairHelpers
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    banner "knife vcair vm delete INSTANCEID [INSTANCEID] (options)"
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    def execute_command
         
     | 
| 
      
 36 
     | 
    
         
            +
                      @name_args.each do |server_name|
         
     | 
| 
      
 37 
     | 
    
         
            +
                        vapp = vdc.vapps.get_by_name(server_name)
         
     | 
| 
      
 38 
     | 
    
         
            +
                        if vapp
         
     | 
| 
      
 39 
     | 
    
         
            +
                          vapp.power_off
         
     | 
| 
      
 40 
     | 
    
         
            +
                          vapp.undeploy
         
     | 
| 
      
 41 
     | 
    
         
            +
                          vapp.destroy
         
     | 
| 
      
 42 
     | 
    
         
            +
                        else
         
     | 
| 
      
 43 
     | 
    
         
            +
                          ui.warn("No VApp named '#{server_name}' was found.")
         
     | 
| 
      
 44 
     | 
    
         
            +
                        end
         
     | 
| 
      
 45 
     | 
    
         
            +
                        delete_from_chef(server_name)
         
     | 
| 
      
 46 
     | 
    
         
            +
                      end
         
     | 
| 
      
 47 
     | 
    
         
            +
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Author:: Matt Ray (<matt@getchef.com>)
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Author:: Seth Thomas (<sthomas@getchef.com>)
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright:: Copyright (c) 2014 Chef Software, Inc.
         
     | 
| 
      
 5 
     | 
    
         
            +
            # License:: Apache License, Version 2.0
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 8 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 9 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 14 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 15 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 16 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 17 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 18 
     | 
    
         
            +
            #
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            require 'chef/knife/cloud/list_resource_command'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife/vcair_helpers'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'chef/knife/cloud/vcair_service_options'
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            class Chef
         
     | 
| 
      
 25 
     | 
    
         
            +
              class Knife
         
     | 
| 
      
 26 
     | 
    
         
            +
                class Cloud
         
     | 
| 
      
 27 
     | 
    
         
            +
                  class VcairVmList < ResourceListCommand
         
     | 
| 
      
 28 
     | 
    
         
            +
                    include VcairHelpers
         
     | 
| 
      
 29 
     | 
    
         
            +
                    include VcairServiceOptions
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                    banner "knife vcair vm list (options)"
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    def query_resource
         
     | 
| 
      
 34 
     | 
    
         
            +
                      vms = []
         
     | 
| 
      
 35 
     | 
    
         
            +
                      vdc.vapps.all.each do |vapp|
         
     | 
| 
      
 36 
     | 
    
         
            +
                        vms << vapp.vms.all
         
     | 
| 
      
 37 
     | 
    
         
            +
                      end
         
     | 
| 
      
 38 
     | 
    
         
            +
                      vms.flatten
         
     | 
| 
      
 39 
     | 
    
         
            +
                    end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    def before_exec_command
         
     | 
| 
      
 42 
     | 
    
         
            +
                      @columns_with_info = [
         
     | 
| 
      
 43 
     | 
    
         
            +
                        {:label => 'vAPP', :key => 'vapp_name'},
         
     | 
| 
      
 44 
     | 
    
         
            +
                        {:label => 'Name', :key => 'name'},
         
     | 
| 
      
 45 
     | 
    
         
            +
                        {:label => 'IP', :key => 'ip_address'},
         
     | 
| 
      
 46 
     | 
    
         
            +
                        {:label => 'CPU', :key => 'cpu'},
         
     | 
| 
      
 47 
     | 
    
         
            +
                        {:label => 'Memory', :key => 'memory'},
         
     | 
| 
      
 48 
     | 
    
         
            +
                        {:label => 'OS', :key => 'operating_system'},
         
     | 
| 
      
 49 
     | 
    
         
            +
                        {:label => 'Owner', :key => 'vapp', :value_callback => method(:owner) },
         
     | 
| 
      
 50 
     | 
    
         
            +
                        {:label => 'Status', :key => 'status'}
         
     | 
| 
      
 51 
     | 
    
         
            +
                      ]
         
     | 
| 
      
 52 
     | 
    
         
            +
                      @sort_by_field = 'vapp_name'
         
     | 
| 
      
 53 
     | 
    
         
            +
                    end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                    def owner(vapp)
         
     | 
| 
      
 56 
     | 
    
         
            +
                      vapp.owner[0][:name]
         
     | 
| 
      
 57 
     | 
    
         
            +
                    end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            current_dir = File.dirname(__FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
            node_name                "chef0"
         
     | 
| 
      
 3 
     | 
    
         
            +
            client_key               "#{current_dir}/validation.pem"
         
     | 
| 
      
 4 
     | 
    
         
            +
            validation_client_name   "validation"
         
     | 
| 
      
 5 
     | 
    
         
            +
            validation_key           "#{current_dir}/validation.pem"
         
     | 
| 
      
 6 
     | 
    
         
            +
            chef_server_url          "http://localhost:8889"
         
     | 
| 
      
 7 
     | 
    
         
            +
            cache_type               'BasicFile'
         
     | 
| 
      
 8 
     | 
    
         
            +
            cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
         
     | 
| 
      
 9 
     | 
    
         
            +
            cookbook_path            ["#{current_dir}/chef-repo/cookbooks"]
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            -----BEGIN RSA PRIVATE KEY-----
         
     | 
| 
      
 2 
     | 
    
         
            +
            MIIEogIBAAKCAQEA7TfhToresZudM5gaBfzM/eHrGuJtN8uMaG51fLk9rNVwOxIw
         
     | 
| 
      
 3 
     | 
    
         
            +
            eb9AmWJSQgftRj4AJSnt8Jv+QyAafjg79rEmCpd2K+toN1fXiVsf/ld/VdMI5vCd
         
     | 
| 
      
 4 
     | 
    
         
            +
            usJc8aC4OFIVrLetm9eq+joXiCSLfEYP1w4d1gc9wqr54rnGVgQdWv31NhqXX7Tl
         
     | 
| 
      
 5 
     | 
    
         
            +
            2bHRoEsfIFM7Vr5zC9Rv6XEtrwezSpzQ+ru707UOCOHNnH1TDxNDz+L71xJnGXD6
         
     | 
| 
      
 6 
     | 
    
         
            +
            uh596hVm2GiXJ8lyCVJTs/RZ+HKtRuxYOJztdCQAXbd6DDjTBax/cCEzzoxK/LMc
         
     | 
| 
      
 7 
     | 
    
         
            +
            1K/zWCKN8yM/XpiFqNuBB0yrqS5Y4zlROY0ssQIDAQABAoIBAQDmC1HYvD1YGePq
         
     | 
| 
      
 8 
     | 
    
         
            +
            O+/IrK8S6jr4WGq4OBIS2EPhTzbrXBU5g9s0xe7ckIfa9xr4CnpTkATqWCzMZd6r
         
     | 
| 
      
 9 
     | 
    
         
            +
            Vtd31bVhgh6cWu829F3WG2O8YJfg4AX7B46+pWxC+qyMGbZhR8L5pb1ualWVtnL6
         
     | 
| 
      
 10 
     | 
    
         
            +
            cms8D7mJbH5NQUeRwrz/f4AEVNGuw165PhglXnRq3zxs97jdNH6av0na1VLAmUeR
         
     | 
| 
      
 11 
     | 
    
         
            +
            vmYToLoIsK5yLeNzMfRRrQkq4ndUvad2ahqsz+p/xUjfYneBz4uujE/PcCgi423Q
         
     | 
| 
      
 12 
     | 
    
         
            +
            FMH1NtPpzmuZuABU53wUMW4BXsSGv+34UMhRTazcBPRBYjKT6l6F7Tt9wPFxrtVn
         
     | 
| 
      
 13 
     | 
    
         
            +
            KYI9dI0tAoGBAPzBwLsUuyEJtSd2zW63f7EhhG/2rSBm1g9Bcs1sHZtXIX3JN51X
         
     | 
| 
      
 14 
     | 
    
         
            +
            hd+ckXQcLgQYn8syGW1+WcuaHGyp7v3G0yr6b38FWwEnmD85Mq5da1dyio2udBdK
         
     | 
| 
      
 15 
     | 
    
         
            +
            Xm8MfY94yP8qSH3bUDKEl+cV9X5rtzbQAorMXb/Qkc4vErWfABVBKeLPAoGBAPBD
         
     | 
| 
      
 16 
     | 
    
         
            +
            FjGxER9YU4hFV2vn5qElfxa799Vl0uSvao0lSkTpA/sHFxAkRQc/mo1PBClaH0ba
         
     | 
| 
      
 17 
     | 
    
         
            +
            Hqr141o5pGUDgLqpO3kEY5vYBOaFXLFdFCcL+1YUR6t0bX+WCHuq21Cs6Gu4+qNA
         
     | 
| 
      
 18 
     | 
    
         
            +
            D4dpsSPDXfatyXWM5PF2d4FwO2XnL25Yt+rg6dh/AoGAbEfk9UCQWjr6bImswH3E
         
     | 
| 
      
 19 
     | 
    
         
            +
            KnIddonK6VKk6aw0LmTe2imdo3GMbc+M/prohUF9RSv3aOlxk0LJ3TuMadDzHa0L
         
     | 
| 
      
 20 
     | 
    
         
            +
            0iGvmk8FCZ2Yz50FZUWIMtJTIRdXjJLDmfdT4x7vnMDUhXZrCPlcyhbSMPKcbtL2
         
     | 
| 
      
 21 
     | 
    
         
            +
            A9hBYWdMz3PDJCOVuYVNGGkCgYEAhSxKUwTYfs1Qj8oPqOoDdfL4vLs3pfsoqEVr
         
     | 
| 
      
 22 
     | 
    
         
            +
            BA1VW1jlMfE+IV5ZPKlOm2De56TijT09nnloqYwlyS/l3JENPAjoxWs5XCUzucPj
         
     | 
| 
      
 23 
     | 
    
         
            +
            9bi4eYAIMcr5Hq0kypdrtQ4CTiNcGbzaXq6A11fk72RotFWCWSzXFNIGuncoXTuj
         
     | 
| 
      
 24 
     | 
    
         
            +
            xfcg5zUCf3TQrwpcBB1Hf9hm6lUVpptvUZJAQtkWoaWXUPRY0CjcVdDc5ak4xqL2
         
     | 
| 
      
 25 
     | 
    
         
            +
            FcAuJwV95b3qLyPESJ8zUBLOg3DcT1X9mrvRuKgC/Ie6k4R+oxU/nXi4vsPXlvg4
         
     | 
| 
      
 26 
     | 
    
         
            +
            yap6MUYSjPOa7eCrhg2zFZiqO6VLEogPc1nsjb9Zl2UWLLYyCVz=
         
     | 
| 
      
 27 
     | 
    
         
            +
            -----END RSA PRIVATE KEY-----
         
     | 
| 
         @@ -0,0 +1,108 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright: Copyright (c) 2012 Opscode, Inc.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # License: Apache License, Version 2.0
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 5 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 6 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 11 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 12 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 13 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 14 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            # Author:: Ameya Varade (<ameya.varade@clogeny.com>)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            def init_test
         
     | 
| 
      
 21 
     | 
    
         
            +
              #We may not need knife.rb for now but we might need while writing create, list, delete test cases.
         
     | 
| 
      
 22 
     | 
    
         
            +
              puts "\nCreating Test Data\n"
         
     | 
| 
      
 23 
     | 
    
         
            +
              create_file("#{temp_dir}", "validation.pem", "../integration/config/validation.pem" )
         
     | 
| 
      
 24 
     | 
    
         
            +
              create_file("#{temp_dir}", "knife.rb", "../integration/config/knife.rb")
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            def cleanup_test_data
         
     | 
| 
      
 28 
     | 
    
         
            +
              puts "\nCleaning Test Data\n"
         
     | 
| 
      
 29 
     | 
    
         
            +
              FileUtils.rm_rf("#{temp_dir}")
         
     | 
| 
      
 30 
     | 
    
         
            +
              puts "\nDone\n"
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            def get_gem_file_name
         
     | 
| 
      
 34 
     | 
    
         
            +
            	"knife-vcair-" + Knife::Vcair::VERSION + ".gem"
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            describe 'knife-vcair' do
         
     | 
| 
      
 38 
     | 
    
         
            +
              include RSpec::KnifeUtils
         
     | 
| 
      
 39 
     | 
    
         
            +
              before(:all) { init_test }
         
     | 
| 
      
 40 
     | 
    
         
            +
              after(:all) { cleanup_test_data }
         
     | 
| 
      
 41 
     | 
    
         
            +
              context 'gem' do
         
     | 
| 
      
 42 
     | 
    
         
            +
                # context 'build' do
         
     | 
| 
      
 43 
     | 
    
         
            +
                #  let(:command) { "gem build knife-vcair.gemspec" }
         
     | 
| 
      
 44 
     | 
    
         
            +
                #  it 'should succeed' do
         
     | 
| 
      
 45 
     | 
    
         
            +
                #    match_status("should succeed")
         
     | 
| 
      
 46 
     | 
    
         
            +
                #  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                # end
         
     | 
| 
      
 48 
     | 
    
         
            +
                #
         
     | 
| 
      
 49 
     | 
    
         
            +
                # context 'install ' do
         
     | 
| 
      
 50 
     | 
    
         
            +
                #  let(:command) { "gem install " + get_gem_file_name  } 
         
     | 
| 
      
 51 
     | 
    
         
            +
                #  it 'should succeed' do
         
     | 
| 
      
 52 
     | 
    
         
            +
                #    match_status("should succeed")
         
     | 
| 
      
 53 
     | 
    
         
            +
                #  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                # end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                describe 'knife' do
         
     | 
| 
      
 57 
     | 
    
         
            +
                  #context 'vcair' do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  #  context 'image list --help' do
         
     | 
| 
      
 59 
     | 
    
         
            +
                  #   let(:command) { "knife vcair image list --help" } 
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 62 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 63 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  #  context 'network list --help' do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  #   let(:command) { "knife vcair network list --help" } 
         
     | 
| 
      
 66 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 68 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 69 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  #  context 'server create --help' do
         
     | 
| 
      
 72 
     | 
    
         
            +
                  #   let(:command) { "knife vcair server create --help" } 
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 74 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 75 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 76 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                  #  context 'server create --help' do
         
     | 
| 
      
 79 
     | 
    
         
            +
                  #   let(:command) { "knife vcair server create" } 
         
     | 
| 
      
 80 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 81 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 82 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 83 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  #  context 'server delete --help' do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  #   let(:command) { "knife vcair server delete --help" } 
         
     | 
| 
      
 87 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 89 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 90 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                  #  context 'server list --help' do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  #   let(:command) { "knife vcair server list --help" } 
         
     | 
| 
      
 94 
     | 
    
         
            +
                  #     it 'should succeed' do
         
     | 
| 
      
 95 
     | 
    
         
            +
                  #      should have_outcome :stdout => /--help/
         
     | 
| 
      
 96 
     | 
    
         
            +
                  #    end
         
     | 
| 
      
 97 
     | 
    
         
            +
                  #  end
         
     | 
| 
      
 98 
     | 
    
         
            +
                  #end      
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                context 'uninstall ' do
         
     | 
| 
      
 102 
     | 
    
         
            +
                  let(:command) { "gem uninstall knife-vcair -v '#{KnifeVCloud::VERSION}'" }
         
     | 
| 
      
 103 
     | 
    
         
            +
                  it 'should succeed' do
         
     | 
| 
      
 104 
     | 
    
         
            +
                    match_status("should succeed")
         
     | 
| 
      
 105 
     | 
    
         
            +
                  end
         
     | 
| 
      
 106 
     | 
    
         
            +
                end
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Author:: Chirag Jog (<chirag@clogeny.com>)
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright:: Copyright (c) 2013 Opscode
         
     | 
| 
      
 4 
     | 
    
         
            +
            # License:: Apache License, Version 2.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 7 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 13 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 14 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 15 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 16 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            $:.unshift File.expand_path('../../lib', __FILE__)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife/bootstrap'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'chef/knife/vcair_helpers'
         
     | 
| 
      
 23 
     | 
    
         
            +
            # require 'winrm'
         
     | 
| 
      
 24 
     | 
    
         
            +
            # require 'em-winrm'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'chef'
         
     | 
| 
      
 26 
     | 
    
         
            +
            require 'fog'
         
     | 
| 
      
 27 
     | 
    
         
            +
            require 'dotenv'
         
     | 
| 
      
 28 
     | 
    
         
            +
            #Dotenv.load unless ENV['VCLOUD_DIRECTOR_USERNAME']
         
     | 
| 
      
 29 
     | 
    
         
            +
            Dotenv.load
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            # require 'chef/knife/vcloud_base'
         
     | 
| 
      
 33 
     | 
    
         
            +
            # require 'chef/knife/vcloud_server_create'
         
     | 
| 
      
 34 
     | 
    
         
            +
            # require 'chef/knife/vcloud_server_delete'
         
     | 
| 
      
 35 
     | 
    
         
            +
            # require 'chef/knife/vcloud_server_list'
         
     | 
| 
      
 36 
     | 
    
         
            +
            # require 'knife-vcloud/version'
         
     | 
| 
      
 37 
     | 
    
         
            +
            require 'chef/knife/winrm_base'
         
     | 
| 
      
 38 
     | 
    
         
            +
            require 'chef/knife/bootstrap_windows_winrm'
         
     | 
| 
      
 39 
     | 
    
         
            +
            require 'chef/knife/vcair_server_create'
         
     | 
| 
      
 40 
     | 
    
         
            +
            require 'chef/knife/vcair_server_delete'
         
     | 
| 
      
 41 
     | 
    
         
            +
            require 'chef/knife/bootstrap_windows_ssh'
         
     | 
| 
      
 42 
     | 
    
         
            +
            require 'knife-vcair/version'
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            require 'test/knife-utils/test_bed'
         
     | 
| 
      
 45 
     | 
    
         
            +
            require 'resource_spec_helper'
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            require "securerandom"
         
     | 
| 
      
 48 
     | 
    
         
            +
            require 'tmpdir'
         
     | 
| 
      
 49 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 50 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) +'/utils/knifeutils')
         
     | 
| 
      
 51 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) +'/utils/matchers')
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            def temp_dir
         
     | 
| 
      
 54 
     | 
    
         
            +
              @_temp_dir ||= Dir.mktmpdir
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            def match_status(test_run_expect)
         
     | 
| 
      
 58 
     | 
    
         
            +
              if "#{test_run_expect}" == "should fail"
         
     | 
| 
      
 59 
     | 
    
         
            +
                should_not have_outcome :status => 0
         
     | 
| 
      
 60 
     | 
    
         
            +
              elsif "#{test_run_expect}" == "should succeed"
         
     | 
| 
      
 61 
     | 
    
         
            +
                should have_outcome :status => 0
         
     | 
| 
      
 62 
     | 
    
         
            +
              elsif "#{test_run_expect}" == "should return empty list"
         
     | 
| 
      
 63 
     | 
    
         
            +
                should have_outcome :status => 0
         
     | 
| 
      
 64 
     | 
    
         
            +
              else
         
     | 
| 
      
 65 
     | 
    
         
            +
                should have_outcome :status => 0
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            def create_file(file_dir, file_name, data_to_write_file_path)
         
     | 
| 
      
 70 
     | 
    
         
            +
              data_to_write = File.read(File.expand_path("#{data_to_write_file_path}", __FILE__))
         
     | 
| 
      
 71 
     | 
    
         
            +
              File.open("#{file_dir}/#{file_name}", 'w') {|f| f.write(data_to_write)}
         
     | 
| 
      
 72 
     | 
    
         
            +
              puts "Creating: #{file_name}"
         
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,231 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Author:: Vulk <wolfpack@vulk.co>
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright:: Copyright (c) 2014 Chef Inc
         
     | 
| 
      
 4 
     | 
    
         
            +
            # License:: Apache License, Version 2.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 7 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 13 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 14 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 15 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 16 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            require File.expand_path('../../../../../spec_helper', __FILE__)
         
     | 
| 
      
 20 
     | 
    
         
            +
            require 'fog'
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'chef/knife/bootstrap'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require 'chef/knife/bootstrap_windows_winrm'
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            def vcair
         
     | 
| 
      
 25 
     | 
    
         
            +
              @vcair ||= Fog::Compute::VcloudDirector.new(
         
     | 
| 
      
 26 
     | 
    
         
            +
                :connection_options => {
         
     | 
| 
      
 27 
     | 
    
         
            +
                  :ssl_verify_peer => false,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  :connect_timeout => 200,
         
     | 
| 
      
 29 
     | 
    
         
            +
                  :read_timeout => 200
         
     | 
| 
      
 30 
     | 
    
         
            +
                }
         
     | 
| 
      
 31 
     | 
    
         
            +
              )
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            ## TODO: make sure variables are consistent for VCAir/Vcloud Director.. etc
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            describe Chef::Knife::Cloud::VcairServerCreate do
         
     | 
| 
      
 37 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 38 
     | 
    
         
            +
                @knife_vcair_create = Chef::Knife::Cloud::VcairServerCreate.new
         
     | 
| 
      
 39 
     | 
    
         
            +
                @knife_vcair_create.stub(:tcp_test_ssh).and_return(true)
         
     | 
| 
      
 40 
     | 
    
         
            +
                @knife_vcair_create.stub(:tcp_test_winrm).and_return(true)
         
     | 
| 
      
 41 
     | 
    
         
            +
                {
         
     | 
| 
      
 42 
     | 
    
         
            +
                  :image => 'image',
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :vcair_password => ENV['VCAIR_PASSWORD'] || 'vcair_password',
         
     | 
| 
      
 44 
     | 
    
         
            +
                  :vcair_username => ENV['VCAIR_USERNAME'] || 'vcair_username',
         
     | 
| 
      
 45 
     | 
    
         
            +
                  :vcair_api_host => ENV['VCAIR_HOST'] || 'vcair_host',
         
     | 
| 
      
 46 
     | 
    
         
            +
                  :vcair_org => ENV['VCAIR_ORG'] || 'vcair_org',
         
     | 
| 
      
 47 
     | 
    
         
            +
                  :vcair_catalog_item => ENV['VCLOUD_CATALOG_ITEM'] || 'vcair_catalog_item',
         
     | 
| 
      
 48 
     | 
    
         
            +
                  :vcair_vm_name => ((ENV['VCAIR_VMNAME']).nil? ? ('TESTING-KNIFE' + rand.to_s) : (ENV['VCAIR_VMNAME']) + rand.to_s),
         
     | 
| 
      
 49 
     | 
    
         
            +
                  :vcair_api_version => '5.6',
         
     | 
| 
      
 50 
     | 
    
         
            +
                  :chef_node_name => 'chef_node_name',
         
     | 
| 
      
 51 
     | 
    
         
            +
                }.each do |key, value|
         
     | 
| 
      
 52 
     | 
    
         
            +
                  @knife_vcair_create.config[key] = value
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                @knife_vcair_create.stub(:puts)
         
     | 
| 
      
 56 
     | 
    
         
            +
                @knife_vcair_create.stub(:print)
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                @vcair_connection = double(Fog::Compute::VcloudDirector)
         
     | 
| 
      
 59 
     | 
    
         
            +
                #@vcair_org = double(Fog::Compute::VcloudDirector::....
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            # [  <Fog::Compute::VcloudDirector::Organization
         
     | 
| 
      
 62 
     | 
    
         
            +
            #     id="5856ae9f-22c7-4453-952a-12868fdce6e4",
         
     | 
| 
      
 63 
     | 
    
         
            +
            #     name="M511664989-4904",
         
     | 
| 
      
 64 
     | 
    
         
            +
            #     type="application/vnd.vmware.vcloud.org+xml",
         
     | 
| 
      
 65 
     | 
    
         
            +
            #     href="https://p3v11-vcd.vcair.vmware.com:443/api/org/5856ae9f-22c7-4453-952a-12868fdce6e4",
         
     | 
| 
      
 66 
     | 
    
         
            +
            #     description=NonLoaded,
         
     | 
| 
      
 67 
     | 
    
         
            +
            #     full_name=NonLoaded
         
     | 
| 
      
 68 
     | 
    
         
            +
            #   >]
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                @catalog_items = [double(:href => "image", :password_enabled? => true)]
         
     | 
| 
      
 71 
     | 
    
         
            +
                @catalogs = [double(:href => "catalog", :catalog_items => @catalog_items)]
         
     | 
| 
      
 72 
     | 
    
         
            +
                @vcair_connection.stub_chain(:catalogs).and_return( @catalogs )
         
     | 
| 
      
 73 
     | 
    
         
            +
                @network = double(:name => "network", :href => "vcair_network")
         
     | 
| 
      
 74 
     | 
    
         
            +
                @vcair_connection.stub_chain(:networks, :all, :find).and_return( @network )
         
     | 
| 
      
 75 
     | 
    
         
            +
                @vcair_vapps = double()
         
     | 
| 
      
 76 
     | 
    
         
            +
                @new_vapp = double(:name => "name", :href => "vapp", :children => {:href => "children"})
         
     | 
| 
      
 77 
     | 
    
         
            +
                @new_server = double(
         
     | 
| 
      
 78 
     | 
    
         
            +
                  :id => "id",
         
     | 
| 
      
 79 
     | 
    
         
            +
                  :network => {:network_name => "vcair_network", :network_mode => "POOL" },
         
     | 
| 
      
 80 
     | 
    
         
            +
                  :password => 'password',
         
     | 
| 
      
 81 
     | 
    
         
            +
                  :cpu => 'cpu',
         
     | 
| 
      
 82 
     | 
    
         
            +
                  :memory => 'memory'
         
     | 
| 
      
 83 
     | 
    
         
            +
                )
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              describe "run" do
         
     | 
| 
      
 87 
     | 
    
         
            +
                before do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #Fog::Compute::VcloudDirector.should_receive(:new).and_return(@vcair_connection)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  #@vcair_connection.should_receive(:servers).and_return( @vcair_vapps )
         
     | 
| 
      
 90 
     | 
    
         
            +
                  #@vcair_vapps.should_receive(:create).and_return( @new_vapp )
         
     | 
| 
      
 91 
     | 
    
         
            +
                  #@new_vapp.should_receive(:wait_for)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  #@new_server.should_receive(:wait_for).twice
         
     | 
| 
      
 93 
     | 
    
         
            +
                  #@new_server.should_receive(:power_on).and_return(true)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  #@new_server.should_receive(:network=).and_return(@new_server.network)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  #@vcair_connection.should_receive(:get_vapp).and_return( @new_vapp )
         
     | 
| 
      
 96 
     | 
    
         
            +
                  #@vcair_connection.should_receive(:get_server).and_return( @new_server )
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                it "creates an vapp and bootstraps it" do
         
     | 
| 
      
 100 
     | 
    
         
            +
                  # TODO: mock out the vcair_connetion completely
         
     | 
| 
      
 101 
     | 
    
         
            +
                  #Fog::Compute::VcloudDirector.should_receive(:new).and_return(@vcair_connection)
         
     | 
| 
      
 102 
     | 
    
         
            +
                  #@new_server.should_receive(:save)
         
     | 
| 
      
 103 
     | 
    
         
            +
                  @bootstrap = Chef::Knife::Bootstrap.new
         
     | 
| 
      
 104 
     | 
    
         
            +
                  Chef::Knife::Bootstrap.stub(:new).and_return(@bootstrap)
         
     | 
| 
      
 105 
     | 
    
         
            +
                  #@bootstrap.should_receive(:run)
         
     | 
| 
      
 106 
     | 
    
         
            +
                  @knife_vcair_create.run
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              #   it "creates an vapp with non-default CPU/Memory" do
         
     | 
| 
      
 110 
     | 
    
         
            +
              #     # Fog::Vcloud::Compute.should_receive(:new).and_return(@vcair_connection)
         
     | 
| 
      
 111 
     | 
    
         
            +
              #     @new_network = {:IpAddress => "IpAddress"}
         
     | 
| 
      
 112 
     | 
    
         
            +
              #     @new_server.stub(:network).and_return(@new_network)
         
     | 
| 
      
 113 
     | 
    
         
            +
              #     @knife_vcair_create.config[:vcair_cpus] = 'cpu'
         
     | 
| 
      
 114 
     | 
    
         
            +
              #     @knife_vcair_create.config[:vcair_memory] = 'memory'
         
     | 
| 
      
 115 
     | 
    
         
            +
              #     @new_server.should_receive(:cpu=).and_return(@new_server.cpu)
         
     | 
| 
      
 116 
     | 
    
         
            +
              #     @new_server.should_receive(:memory=).and_return(@new_server.memory)
         
     | 
| 
      
 117 
     | 
    
         
            +
              #     @new_server.should_receive(:save).exactly(3).times
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
              #     @bootstrap = Chef::Knife::Bootstrap.new
         
     | 
| 
      
 120 
     | 
    
         
            +
              #     Chef::Knife::Bootstrap.stub(:new).and_return(@bootstrap)
         
     | 
| 
      
 121 
     | 
    
         
            +
              #     @bootstrap.should_receive(:run)
         
     | 
| 
      
 122 
     | 
    
         
            +
              #     @knife_vcair_create.run
         
     | 
| 
      
 123 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
              #   it "should bootstrap windows when bootstrap protocol is winrm" do
         
     | 
| 
      
 126 
     | 
    
         
            +
              #     # Fog::Vcloud::Compute.should_receive(:new).and_return(@vcair_connection)
         
     | 
| 
      
 127 
     | 
    
         
            +
              #     @new_server.should_receive(:save)
         
     | 
| 
      
 128 
     | 
    
         
            +
              #     @knife_vcair_create.config[:bootstrap_protocol] = 'winrm'
         
     | 
| 
      
 129 
     | 
    
         
            +
              #     @bootstrap = Chef::Knife::BootstrapWindowsWinrm.new
         
     | 
| 
      
 130 
     | 
    
         
            +
              #     Chef::Knife::BootstrapWindowsWinrm.stub(:new).and_return(@bootstrap)
         
     | 
| 
      
 131 
     | 
    
         
            +
              #     @bootstrap.should_receive(:run)
         
     | 
| 
      
 132 
     | 
    
         
            +
              #     @knife_vcair_create.run
         
     | 
| 
      
 133 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
              #   it "should set the password on server if the image is not password enabled" do
         
     | 
| 
      
 136 
     | 
    
         
            +
              #     Fog::Vcloud::Compute.stub(:new).and_return(@vcair_connection)
         
     | 
| 
      
 137 
     | 
    
         
            +
              #     @catalog_items[0] =double(:href => "image", :password_enabled? => false)
         
     | 
| 
      
 138 
     | 
    
         
            +
              #     @new_network = {:IpAddress => "IpAddress"}
         
     | 
| 
      
 139 
     | 
    
         
            +
              #     @new_server.stub(:network).and_return(@new_network)
         
     | 
| 
      
 140 
     | 
    
         
            +
              #     @new_server.should_receive(:password=)
         
     | 
| 
      
 141 
     | 
    
         
            +
              #     @new_server.should_receive(:save).twice
         
     | 
| 
      
 142 
     | 
    
         
            +
              #     @bootstrap = Chef::Knife::Bootstrap.new
         
     | 
| 
      
 143 
     | 
    
         
            +
              #     Chef::Knife::Bootstrap.stub!(:new).and_return(@bootstrap)
         
     | 
| 
      
 144 
     | 
    
         
            +
              #     @bootstrap.should_receive(:run)
         
     | 
| 
      
 145 
     | 
    
         
            +
              #     @knife_vcair_create.run
         
     | 
| 
      
 146 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
              #   it "should not bootstrap when no_bootstrap set" do
         
     | 
| 
      
 149 
     | 
    
         
            +
              #     Fog::Vcloud::Compute.stub(:new).and_return(@vcair_connection)
         
     | 
| 
      
 150 
     | 
    
         
            +
              #     @new_server.should_receive(:save)
         
     | 
| 
      
 151 
     | 
    
         
            +
              #     @knife_vcair_create.config[:no_bootstrap] = true
         
     | 
| 
      
 152 
     | 
    
         
            +
              #     @bootstrap = Chef::Knife::Bootstrap.new
         
     | 
| 
      
 153 
     | 
    
         
            +
              #     @bootstrap.should_not_receive(:run)
         
     | 
| 
      
 154 
     | 
    
         
            +
              #     lambda  { @knife_vcair_create.run }.should raise_error SystemExit
         
     | 
| 
      
 155 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
              # end
         
     | 
| 
      
 158 
     | 
    
         
            +
              # describe "run" do
         
     | 
| 
      
 159 
     | 
    
         
            +
              #   before do
         
     | 
| 
      
 160 
     | 
    
         
            +
              #     @knife_vcair_create.ui.stub(:error)
         
     | 
| 
      
 161 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 162 
     | 
    
         
            +
              #   it 'should fail if compulsory params - image are not set' do
         
     | 
| 
      
 163 
     | 
    
         
            +
              #     @knife_vcair_create.config[:image] = nil
         
     | 
| 
      
 164 
     | 
    
         
            +
              #     lambda  { @knife_vcair_create.run }.should raise_error SystemExit
         
     | 
| 
      
 165 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 166 
     | 
    
         
            +
              #   it 'should fail if compulsory params - network are not set' do
         
     | 
| 
      
 167 
     | 
    
         
            +
              #     @knife_vcair_create.config[:vcair_network] = nil
         
     | 
| 
      
 168 
     | 
    
         
            +
              #     lambda  { @knife_vcair_create.run }.should raise_error SystemExit
         
     | 
| 
      
 169 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
              # end
         
     | 
| 
      
 172 
     | 
    
         
            +
              # describe "when configuring the bootstrap process" do
         
     | 
| 
      
 173 
     | 
    
         
            +
              #   before do
         
     | 
| 
      
 174 
     | 
    
         
            +
              #     @knife_vcair_create.config[:ssh_user] = "ubuntu"
         
     | 
| 
      
 175 
     | 
    
         
            +
              #     @knife_vcair_create.config[:chef_node_name] = "blarf"
         
     | 
| 
      
 176 
     | 
    
         
            +
              #     @knife_vcair_create.config[:template_file] = '~/.chef/templates/my-bootstrap.sh.erb'
         
     | 
| 
      
 177 
     | 
    
         
            +
              #     @knife_vcair_create.config[:distro] = 'ubuntu-10.04-magic-sparkles'
         
     | 
| 
      
 178 
     | 
    
         
            +
              #     @knife_vcair_create.config[:run_list] = ['role[base]']
         
     | 
| 
      
 179 
     | 
    
         
            +
              #     @knife_vcair_create.config[:json_attributes] = "{'my_attributes':{'foo':'bar'}"
         
     | 
| 
      
 180 
     | 
    
         
            +
              #     @knife_vcair_create.config[:bootstrap_protocol] = nil
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
              #     @new_server.stub(:name).and_return("server_name")
         
     | 
| 
      
 183 
     | 
    
         
            +
              #     @fqdn = mock()
         
     | 
| 
      
 184 
     | 
    
         
            +
              #     @bootstrap = @knife_vcair_create.bootstrap_for_node(@new_server, @fqdn)
         
     | 
| 
      
 185 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
              #   it "configures sets the bootstrap's run_list" do
         
     | 
| 
      
 188 
     | 
    
         
            +
              #     @bootstrap.config[:run_list].should == ['role[base]']
         
     | 
| 
      
 189 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
              #   it "configures the bootstrap to use the correct ssh_user login" do
         
     | 
| 
      
 192 
     | 
    
         
            +
              #     @bootstrap.config[:ssh_user].should == 'ubuntu'
         
     | 
| 
      
 193 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
              #   it "configures the bootstrap to use the configured node name if provided" do
         
     | 
| 
      
 196 
     | 
    
         
            +
              #     @bootstrap.config[:chef_node_name].should == 'blarf'
         
     | 
| 
      
 197 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 198 
     | 
    
         
            +
             
     | 
| 
      
 199 
     | 
    
         
            +
              #   it "configures the bootstrap to use the vcair server name if no explicit node name is set" do
         
     | 
| 
      
 200 
     | 
    
         
            +
              #     @knife_vcair_create.config[:chef_node_name] = nil
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
              #     bootstrap = @knife_vcair_create.bootstrap_for_node(@new_server, @fqdn)
         
     | 
| 
      
 203 
     | 
    
         
            +
              #     bootstrap.config[:chef_node_name].should == @new_server.name
         
     | 
| 
      
 204 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
              #   it "configures the bootstrap to use prerelease versions of chef if specified" do
         
     | 
| 
      
 207 
     | 
    
         
            +
              #     @bootstrap.config[:prerelease].should be_false
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
              #     @knife_vcair_create.config[:prerelease] = true
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
              #     bootstrap = @knife_vcair_create.bootstrap_for_node(@new_server, @fqdn)
         
     | 
| 
      
 212 
     | 
    
         
            +
              #     bootstrap.config[:prerelease].should be_true
         
     | 
| 
      
 213 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
              #   it "configures the bootstrap to use the desired distro-specific bootstrap script" do
         
     | 
| 
      
 216 
     | 
    
         
            +
              #     @bootstrap.config[:distro].should == 'ubuntu-10.04-magic-sparkles'
         
     | 
| 
      
 217 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
              #   it "configures the bootstrap to use sudo" do
         
     | 
| 
      
 220 
     | 
    
         
            +
              #     @bootstrap.config[:use_sudo].should be_true
         
     | 
| 
      
 221 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
              #   it "configured the bootstrap to use the desired template" do
         
     | 
| 
      
 224 
     | 
    
         
            +
              #     @bootstrap.config[:template_file].should == '~/.chef/templates/my-bootstrap.sh.erb'
         
     | 
| 
      
 225 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
              #   it "configured the bootstrap to set an vcair hint (via Chef::Config)" do
         
     | 
| 
      
 228 
     | 
    
         
            +
              #     Chef::Config[:knife][:hints]["vcair"].should_not be_nil
         
     | 
| 
      
 229 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 230 
     | 
    
         
            +
              end
         
     | 
| 
      
 231 
     | 
    
         
            +
            end
         
     |