Sha256: 6045c10d856603eb5cf3fd268718895e668d214cc625fa848820242f8c865ced

Contents?: true

Size: 1.72 KB

Versions: 9

Compression:

Stored size: 1.72 KB

Contents

module Fog
  module Compute
    class QingCloud
      class Real

        # {API Reference}[https://docs.qingcloud.com/api/instance/terminate_instances.html]
        def terminate_instances(instance_id)
          params = Fog::QingCloud.indexed_param('instances', instance_id)
          request({
            'action'    => 'TerminateInstances',
          }.merge!(params))
        end

      end

      class Mock

        def terminate_instances(instance_id)
          response = Excon::Response.new
          instance_id = [*instance_id]
          if (self.data[:instances].keys & instance_id).length == instance_id.length
            response.status = 200
            for id in instance_id
              self.data[:instances].delete(id)
            end

            describe_addresses('instance-id' => instance_id).body['eip_set'].each do |address|
              if address['resource'].has_key?('resource_id') and instance_id.include?(address['resource']['resource_id'])
                disassociate_address(address['eip_id'])
              end
            end

            describe_volumes('verbose' => 1,'instance-id' => instance_id).body['volume_set'].each do |volume|
              if !volume['instance'].empty? and instance_id.include?(volume['instance']['instance_id'])
                detach_volume(volume['volume_id'])
              end
            end
            
            response.body = {
              'action'    => 'TerminateInstancesResponse',
              'job_id'    => Fog::QingCloud::Mock.job_id,
              'ret_code'  => 0
            }

            response
          else
            raise Fog::QingCloud::Errors::NotFound, "The instance ID '#{instance_id}' does not exist"
          end
        end

      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ns-fog-1.22.11 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.10 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.9 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.8 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.7 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.6 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.4 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.3 lib/fog/qingcloud/requests/compute/terminate_instances.rb
ns-fog-1.22.2 lib/fog/qingcloud/requests/compute/terminate_instances.rb