Sha256: 164c160d667fb6d893b47ea1fea20b59f193e43fb64e659f022d12a8cd49a3cf

Contents?: true

Size: 1.59 KB

Versions: 9

Compression:

Stored size: 1.59 KB

Contents

module Fog
  module Compute
    class QingCloud
      class Real

        # Stop specified instance
        # {API Reference}[https://docs.qingcloud.com/api/instance/reset_instances.html]
        def reset_instances(instance_id)
          params = Fog::QingCloud.indexed_param('instances', instance_id)
          params['force'] = 1 if force
          request({
            'action'    => 'ResetInstances'
          }.merge!(params))
        end

      end

      class Mock
        def reset_instances(instance_id)
          instance_ids = Array(instance_id)
          instance_set = self.data[:instances].select {|id, s| instance_ids.include?(id) }

          if instance_set.empty?
            raise Fog::QingCloud::Errors::NotFound, "The instance ID '#{instance_ids.join(', ')}' does not exist"
          else
            instance_set.each do |x|
              unless ['running', 'stopped'].include? x['status']
                raise Fog::QingCloud::Errors::PermissionDenied, "instance must be in 'running' or 'stopped' status"
              end
            end

            instance_set.map! do |x| 
              x['status'] = 'pending'
              x['transition_status'] = 'reseting'
              self.data[:modified_at][x['instance_id']] = Time.now
              x
            end
            response = Excon::Response.new
            response.status = 200
            response.body = {
              'action' => 'ResetInstancesResponse',
              'job_id' => Fog::QingCloud::Mock.job_id,
              'ret_code' => 0
            }
            response
          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/reset_instances.rb
ns-fog-1.22.10 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.9 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.8 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.7 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.6 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.4 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.3 lib/fog/qingcloud/requests/compute/reset_instances.rb
ns-fog-1.22.2 lib/fog/qingcloud/requests/compute/reset_instances.rb