Class: Fog::Compute::QingCloud::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/qingcloud/compute.rb,
lib/fog/qingcloud/requests/compute/join_vxnet.rb,
lib/fog/qingcloud/requests/compute/join_router.rb,
lib/fog/qingcloud/requests/compute/leave_vxnet.rb,
lib/fog/qingcloud/requests/compute/leave_router.rb,
lib/fog/qingcloud/requests/compute/create_vxnets.rb,
lib/fog/qingcloud/requests/compute/delete_vxnets.rb,
lib/fog/qingcloud/requests/compute/routers_power.rb,
lib/fog/qingcloud/requests/compute/run_instances.rb,
lib/fog/qingcloud/requests/compute/attach_volumes.rb,
lib/fog/qingcloud/requests/compute/create_routers.rb,
lib/fog/qingcloud/requests/compute/create_volumes.rb,
lib/fog/qingcloud/requests/compute/delete_routers.rb,
lib/fog/qingcloud/requests/compute/delete_volumes.rb,
lib/fog/qingcloud/requests/compute/detach_volumes.rb,
lib/fog/qingcloud/requests/compute/stop_instances.rb,
lib/fog/qingcloud/requests/compute/update_routers.rb,
lib/fog/qingcloud/requests/compute/create_key_pair.rb,
lib/fog/qingcloud/requests/compute/describe_vxnets.rb,
lib/fog/qingcloud/requests/compute/release_address.rb,
lib/fog/qingcloud/requests/compute/reset_instances.rb,
lib/fog/qingcloud/requests/compute/start_instances.rb,
lib/fog/qingcloud/requests/compute/allocate_address.rb,
lib/fog/qingcloud/requests/compute/attach_key_pairs.rb,
lib/fog/qingcloud/requests/compute/delete_key_pairs.rb,
lib/fog/qingcloud/requests/compute/describe_routers.rb,
lib/fog/qingcloud/requests/compute/describe_volumes.rb,
lib/fog/qingcloud/requests/compute/detach_key_pairs.rb,
lib/fog/qingcloud/requests/compute/reboot_instances.rb,
lib/fog/qingcloud/requests/compute/resize_instances.rb,
lib/fog/qingcloud/requests/compute/associate_address.rb,
lib/fog/qingcloud/requests/compute/add_router_statics.rb,
lib/fog/qingcloud/requests/compute/describe_addresses.rb,
lib/fog/qingcloud/requests/compute/describe_instances.rb,
lib/fog/qingcloud/requests/compute/describe_key_pairs.rb,
lib/fog/qingcloud/requests/compute/terminate_instances.rb,
lib/fog/qingcloud/requests/compute/apply_security_group.rb,
lib/fog/qingcloud/requests/compute/disassociate_address.rb,
lib/fog/qingcloud/requests/compute/create_security_group.rb,
lib/fog/qingcloud/requests/compute/delete_router_statics.rb,
lib/fog/qingcloud/requests/compute/delete_security_groups.rb,
lib/fog/qingcloud/requests/compute/describe_router_vxnets.rb,
lib/fog/qingcloud/requests/compute/describe_router_statics.rb,
lib/fog/qingcloud/requests/compute/add_security_group_rules.rb,
lib/fog/qingcloud/requests/compute/change_address_bandwidth.rb,
lib/fog/qingcloud/requests/compute/describe_security_groups.rb,
lib/fog/qingcloud/requests/compute/describe_vxnet_instances.rb,
lib/fog/qingcloud/requests/compute/modify_router_attributes.rb,
lib/fog/qingcloud/requests/compute/modify_resource_attributes.rb,
lib/fog/qingcloud/requests/compute/upload_userdata_attachment.rb,
lib/fog/qingcloud/requests/compute/delete_security_group_rules.rb,
lib/fog/qingcloud/requests/compute/describe_security_group_rules.rb,
lib/fog/qingcloud/requests/compute/modify_security_group_rule_attributes.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/fog/qingcloud/compute.rb', line 164

def initialize(options={})
  setup_credentials(options)
  @connection_options = options[:connection_options] || {}
  @zone               = options[:zone] ||= 'pek1'
  @version            = options[:version]     ||  '1'
  @signature_method   = 'HmacSHA256'
  @signature_version  = '1'

  if @endpoint = options[:endpoint]
    endpoint = URI.parse(@endpoint)
    @host = endpoint.host
    @path = endpoint.path
    @port = endpoint.port
    @scheme = endpoint.scheme
  else
    @host = options[:host] || "api.qingcloud.com"
    @path       = options[:path]        || '/iaas/'
    @persistent = options[:persistent]  || false
    @port       = options[:port]        || 443
    @scheme     = options[:scheme]      || 'https'
  end
  @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
end

Instance Attribute Details

#zoneObject

Returns the value of attribute zone.



162
163
164
# File 'lib/fog/qingcloud/compute.rb', line 162

def zone
  @zone
end

Instance Method Details

#add_router_statics(rt_id, rules) ⇒ Object



7
8
9
10
# File 'lib/fog/qingcloud/requests/compute/add_router_statics.rb', line 7

def add_router_statics(rt_id, rules)
  args = {'action' => 'AddRouterStatics', 'router' => rt_id}.merge(rules)
  request(args)
end

#add_security_group_rules(group_id, options) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/add_security_group_rules.rb', line 7

def add_security_group_rules(group_id, options)
  args = {
    'action' => 'AddSecurityGroupRules',
    'security_group' => group_id
  }.merge(options)
  request(args)
end

#allocate_address(bandwidth, count = 1, name = nil, need_icp = 0) ⇒ Object

Acquire an elastic IP address.

Parameters

  • domain<~String> - Type of EIP, either standard or vpc

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘publicIp’<~String> - The acquired address

      • ‘requestId’<~String> - Id of the request

API Reference



17
18
19
20
21
22
23
24
# File 'lib/fog/qingcloud/requests/compute/allocate_address.rb', line 17

def allocate_address(bandwidth, count = 1, name = nil, need_icp = 0)
  args = {'action' => 'AllocateEips',
          'count' => count,
          'eip_name' => name,
          'bandwidth' => bandwidth,
          'need_icp' => need_icp}
  request(args)
end

#apply_security_group(id, server_ids = []) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/apply_security_group.rb', line 7

def apply_security_group(id, server_ids = [])
  args = {'action' => 'ApplySecurityGroup',
          'security_group' => id}
  args.merge!(Fog::QingCloud.indexed_param('instances', [*server_ids]))
  request(args)
end

#associate_address(id, instance_id) ⇒ Object

Associate an elastic IP address with an instance API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/associate_address.rb', line 8

def associate_address(id, instance_id)
  args = {
      'action'   => 'AssociateEip',
      'eip'      => id,
      'instance' => instance_id
    }
  request(args)
end

#attach_key_pairs(key_id, instance_id) ⇒ Object

Delete a key pair that you own API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/attach_key_pairs.rb', line 8

def attach_key_pairs(key_id, instance_id)
  args = {
    'action'    => 'AttachKeyPairs',
  }
  args.merge! Fog::QingCloud.indexed_param('keypairs', [*key_id])
  args.merge! Fog::QingCloud.indexed_param('instances', [*key_id])
  request(args)
end

#attach_volumes(server_id, volume_id) ⇒ Object

Attach an EBS volume with a running instance, exposing as specified device API Reference



9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/attach_volumes.rb', line 9

def attach_volumes(server_id, volume_id)
  args = {
    'action'      => 'AttachVolumes',
    'instance'    => server_id
  }.merge Fog::QingCloud.indexed_param('volumes', volume_id)
  request(args)
end

#change_address_bandwidth(id, bandwidth) ⇒ Object

Delete a key pair that you own API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/change_address_bandwidth.rb', line 8

def change_address_bandwidth(id, bandwidth)
  args = {
    'action'    => 'ChangeEipsBandwidth',
    'bandwidth' => bandwidth
  }.merge(Fog::QingCloud.indexed_param('eips', id))
  request(args)
end

#create_key_pair(key_name = '', mode = 'system', encrypt_method = 'ssh-rsa', public_key = '') ⇒ Object

Create a new key pair Reference [docs.qingcloud.com/api/keypair/create_key_pairs.html]



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/qingcloud/requests/compute/create_key_pair.rb', line 8

def create_key_pair(key_name = '', mode = 'system', encrypt_method = 'ssh-rsa', public_key = '')
  args = {
    'action'       => 'CreateKeyPair',
    'keypair_name' => key_name,
    'mode'         => mode
  }

  if mode == 'user'
    args['public_key'] = public_key
  else
    args['encrypt_method'] = encrypt_method
  end

  request(args)
end

#create_routers(name = nil, count = 1, security_group = nil) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/create_routers.rb', line 7

def create_routers(name = nil, count = 1, security_group = nil)
  args = {'action' => 'CreateRouters',
          'count' => count,
          'router_name' => name,
          'security_group' => security_group}.reject {|k, v| v.nil?}
  request(args)
end

#create_security_group(name = nil) ⇒ Object

Create a new security group



8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/create_security_group.rb', line 8

def create_security_group(name = nil)
  request(
    'action'            => 'CreateSecurityGroup',
    'security_group_name'         => name
  )
end

#create_volumes(zone, size, options = {}) ⇒ Object

Create an EBS volume API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/create_volumes.rb', line 8

def create_volumes(zone, size, options = {})
  request({
    'action'            => 'CreateVolumes',
    'zone'  => zone,
    'size'              => size,
  }.merge(options.reject{|k, v| v.nil?}))
end

#create_vxnets(options) ⇒ Object

Creates a Vxnet with the CIDR block you specify. API Reference



8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/create_vxnets.rb', line 8

def create_vxnets(options)
  request({
    'action'     => 'CreateVxnets',
  }.merge!(options))

end

#delete_key_pairs(key_id) ⇒ Object

Delete a key pair that you own API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/delete_key_pairs.rb', line 8

def delete_key_pairs(key_id)
  args = {
    'action'    => 'DeleteKeyPairs',
  }
  args.merge! Fog::QingCloud.indexed_param('keypairs', [*key_id])
  request(args)
end

#delete_router_statics(rule_id) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/delete_router_statics.rb', line 7

def delete_router_statics(rule_id)
  args = {'action' => 'DeleteRouterStatics'}.merge(
      Fog::QingCloud.indexed_param('router_statics', [*rule_id])
    )
  request(args)
end

#delete_routers(id) ⇒ Object



7
8
9
10
11
# File 'lib/fog/qingcloud/requests/compute/delete_routers.rb', line 7

def delete_routers(id)
  args = {'action' => 'DeleteRouters'}
  args.merge!(Fog::QingCloud.indexed_param('routers', [*id]))
  request(args)
end

#delete_security_group_rules(rule_id) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/delete_security_group_rules.rb', line 7

def delete_security_group_rules(rule_id)
  args = {
    'action' => 'DeleteSecurityGroupRules'
  }.merge(Fog::QingCloud.indexed_param('security_group_rules', rule_id))
  request(args)
end

#delete_security_groups(id) ⇒ Object

Delete a security group that you own API Reference



9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/delete_security_groups.rb', line 9

def delete_security_groups(id)
  args = Fog::QingCloud.indexed_param('security_groups', id)
  args['action'] = 'DeleteSecurityGroups'
  request(args)
end

#delete_volumes(volume_id) ⇒ Object

Delete an EBS volume

Parameters

  • volume_id<~String> - Id of volume to delete.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?

API Reference



18
19
20
21
22
23
# File 'lib/fog/qingcloud/requests/compute/delete_volumes.rb', line 18

def delete_volumes(volume_id)
  args = {
      'action'    => 'DeleteVolumes',
    }.merge(Fog::QingCloud.indexed_param('volumes', [*volume_id]))
  request(args)
end

#delete_vxnets(vxnet_id) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/delete_vxnets.rb', line 7

def delete_vxnets(vxnet_id)
  args = {
      'action' => 'DeleteVxnets'
    }.merge(Fog::QingCloud.indexed_param('vxnets', [*vxnet_id]))
  request(args)
end

#describe_addresses(filters = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/qingcloud/requests/compute/describe_addresses.rb', line 7

def describe_addresses(filters = {})
  params = {}
  params['search_word'] = filters['public-ip'] if filters['public-ip']
  params.merge!(Fog::QingCloud.indexed_param('eips', filters['eip-id']))
  params.merge!(Fog::QingCloud.indexed_param('status', filters['status']))

  request({
    'action'    => 'DescribeEips',
  }.merge!(params))
end

#describe_instances(filters = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/qingcloud/requests/compute/describe_instances.rb', line 6

def describe_instances(filters = {})
  params = {}
  ['instance-id', 'image-id', 'instance-type', 'status', 'state'].each do |item|
    if filters[item]
      ids = filters.delete(item)
      item = 'instances' if item == 'instance-id'
      item = 'status' if item == 'state'

      [*ids].each_with_index do |id, index|
        params.merge!("#{item.gsub(/-/, '_')}.#{index + 1}" => id)
      end
    end
  end
  params['search_word'] = filters['search-word'] || filters['search_word']

  request({
    'action'  => 'DescribeInstances',
    'verbose' => 1
  }.merge!(params))
end

#describe_key_pairs(filters = {}) ⇒ Object

Describe all or specified key pairs API Reference



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/qingcloud/requests/compute/describe_key_pairs.rb', line 9

def describe_key_pairs(filters = {})
  unless filters.is_a?(Hash)
    Fog::Logger.deprecation("describe_key_pairs with #{filters.class} param is deprecated, use describe_key_pairs('keypair-id' => []) instead [light_black](#{caller.first})[/]")
    filters = {'keypair-id' => [*filters]}
  end

  args = {
    'action'    => 'DescribeKeyPairs',
    'verbose'   => filters['verbose'] || 1
  }
  args['instance_id'] = filters['instance-id'] || filters['instance_id']
  args.merge!(Fog::QingCloud.indexed_param('keypairs', [*filters['keypair-id']]))
  args['encrypt_method'] = filters['encrypt_method'] || filters['encrypt-method']
  args['search_word'] = filters['search_word'] || filters['search-word'] || filters['keypair-name']

  request(args)
end

#describe_router_statics(rt_id, rule_id = [], type = nil) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/describe_router_statics.rb', line 7

def describe_router_statics(rt_id, rule_id = [], type = nil)
  args = {'action' => 'DescribeRouterStatics', 
          'static_type' => type, 
          'router' => rt_id}
  args.merge!(Fog::QingCloud.indexed_param('router_statics', [*rule_id]))
  request(args)
end

#describe_router_vxnets(router_id, vxnet_id) ⇒ Object

Describe all or specified routers API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/describe_router_vxnets.rb', line 8

def describe_router_vxnets(router_id, vxnet_id)
  request({
    'action' => 'DescribeRouterVxnets',
    'router' => router_id,
    'vxnet'  => vxnet_id
  })
end

#describe_routers(filters = {}) ⇒ Object

Describe all or specified routers API Reference



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/fog/qingcloud/requests/compute/describe_routers.rb', line 8

def describe_routers(filters = {})
  unless filters.is_a?(Hash)
    Fog::Logger.warning("describe_routers with #{filters.class} param is deprecated, use describe_routers('router-id' => []) instead [light_black](#{caller.first})[/]")
    filters = {'router-id' => [*filters]}
  end
  params = Fog::QingCloud.indexed_param('routers', filters['router-id']) || {}
  params.merge!(Fog::QingCloud.indexed_param('status', filters['status'])) if filters['status']
  params['search_word'] = filters['search_word']
  request({
    'action'    => 'DescribeRouters',
  }.merge!(params))
end

#describe_security_group_rules(group_id = nil, rule_ids = nil, direction = nil) ⇒ Object

Describe all specified security group rules API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/describe_security_group_rules.rb', line 8

def describe_security_group_rules(group_id = nil, rule_ids = nil, direction = nil)
  params = {
    'action'  => 'DescribeSecurityGroupRules',
    'security_group' => group_id,
    'direction' => direction
  }.merge(Fog::QingCloud.indexed_param('security_group_rules', rule_ids))
  request(params)
end

#describe_security_groups(filters = {}) ⇒ Object

Describe all or specified security groups API Reference



8
9
10
11
12
13
14
15
16
# File 'lib/fog/qingcloud/requests/compute/describe_security_groups.rb', line 8

def describe_security_groups(filters = {})
  id = filters['group-id']
  params = Fog::QingCloud.indexed_param('security_groups', filters['group-id'])
  params['search_word'] = filters['search-word'] || filters['search_word'] || filters['group-name']
  request({
    'action'  => 'DescribeSecurityGroups',
    'verbose' => filters['verbose'] || 1
  }.merge!(params))
end

#describe_volumes(filters = {}) ⇒ Object

Describe all or specified volumes. API Reference



8
9
10
11
12
13
14
15
16
17
# File 'lib/fog/qingcloud/requests/compute/describe_volumes.rb', line 8

def describe_volumes(filters = {})
  params = Fog::QingCloud.indexed_param('volumes', filters['volume-id'])
  params.merge!(Fog::QingCloud.indexed_param('status', filters['status']))
  params['search_word'] = filters['name']
  params['instance_id'] = filters['instance-id']
  request({
    'action'    => 'DescribeVolumes',
    'verbose'   => filters['verbose'] || 1
  }.merge!(params))
end

#describe_vxnet_instances(vxnet_id, filters = {}) ⇒ Object

Describe all or specified vxnets API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/describe_vxnet_instances.rb', line 8

def describe_vxnet_instances(vxnet_id, filters = {})
  params = {
    'action' => 'DescribeVxnetInstances',
    'status' => filters['status'] || 'running'
  }.merge Fog::QingCloud.indexed_param('instances', filters['instance-id'])

  request(params)
end

#describe_vxnets(filters = {}) ⇒ Object

Describe all or specified vxnets API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/describe_vxnets.rb', line 8

def describe_vxnets(filters = {})
  params = Fog::QingCloud.indexed_param('vxnets', [*filters['vxnet-id']])
  params['search_word'] = filters['search_word']
  request({
    'action'    => 'DescribeVxnets',
    'verbose'   => filters['verbose'] || 1
  }.merge!(params))
end

#detach_key_pairs(key_id, instance_id) ⇒ Object

Delete a key pair that you own API Reference



8
9
10
11
12
13
14
15
# File 'lib/fog/qingcloud/requests/compute/detach_key_pairs.rb', line 8

def detach_key_pairs(key_id, instance_id)
  args = {
    'action'    => 'DetachKeyPairs',
  }
  args.merge! Fog::QingCloud.indexed_param('keypairs', [*key_id])
  args.merge! Fog::QingCloud.indexed_param('instances', [*key_id])
  request(args)
end

#detach_volumes(server_id, volume_id) ⇒ Object

Detach an EBS volume from a running instance

API Reference



10
11
12
13
14
15
16
# File 'lib/fog/qingcloud/requests/compute/detach_volumes.rb', line 10

def detach_volumes(server_id, volume_id)
  args = {
    'action'   => 'DetachVolumes',
    'instance'    => server_id
  }.merge Fog::QingCloud.indexed_param('volumes', volume_id)
  request(args)
end

#disassociate_address(id) ⇒ Object

Disassociate an elastic IP address from its instance (if any) API Reference



8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/disassociate_address.rb', line 8

def disassociate_address(id)
  args = {
      'action' => 'DissociateEips'
    }.merge(Fog::QingCloud.indexed_param('eips', [*id]))
  request(args)
end

#join_router(rt_id, vxnet_id, ip_network, features = 1) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/join_router.rb', line 7

def join_router(rt_id, vxnet_id, ip_network, features = 1)
  args = {'action' => 'JoinRouter',
          'router' => rt_id,
          'vxnet'  => vxnet_id,
          'ip_network' => ip_network,
          'features' => features}
  request(args)
end

#join_vxnet(vxnet_id, server_id) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/join_vxnet.rb', line 6

def join_vxnet(vxnet_id, server_id)
  params = Fog::QingCloud.indexed_param('instances', [*server_id])
  params['vxnet'] = vxnet_id
  request({
    'action'    => 'JoinVxnet',
  }.merge!(params))
end

#leave_router(rt_id, vxnet_id) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/leave_router.rb', line 7

def leave_router(rt_id, vxnet_id)
  args = {'action' => 'LeaveRouter',
          'router' => rt_id}
  args.merge! Fog::QingCloud.indexed_param('vxnets', [*vxnet_id])
  request(args)
end

#leave_vxnet(vxnet_id, server_id) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/leave_vxnet.rb', line 6

def leave_vxnet(vxnet_id, server_id)
  params = Fog::QingCloud.indexed_param('instances', [*server_id])
  params['vxnet'] = vxnet_id
  request({
    'action'    => 'LeaveVxnet',
  }.merge!(params))
end

#modify_resource_attributes(id, resource_type, name = nil, description = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fog/qingcloud/requests/compute/modify_resource_attributes.rb', line 14

def modify_resource_attributes(id, resource_type, name = nil, description = nil)
  aliased_resource_type = {
    'address'  => 'eip',
    'server'   => 'instance'
  }
  resource_type = aliased_resource_type.fetch(resource_type, resource_type)
  action = "Modify#{Fog::QingCloud.camelcase_string(resource_type)}Attributes"
  action = "ModifyKeyPairAttributes" if resource_type == 'keypair'

  name_key = "#{resource_type}_name"
  args = {
    'action'      => action,
    name_key      => name,
    'description' => description,
    resource_type => id
  }
  puts args
  request(args)
end

#modify_router_attributes(id, attributes) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/fog/qingcloud/requests/compute/modify_router_attributes.rb', line 7

def modify_router_attributes(id, attributes)
  args = {'action' => 'ModifyRouterAttributes',
          'router' => id,
          'eip'    => attributes['eip'],
          'security_group' => attributes['security_group_id'],
          'router_name' => attributes['name'],
          'description' => attributes['description']}
  args['eip'] ||= ''
  request(args)
end

#modify_security_group_rule_attributes(rule_id, priority, name = nil) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/modify_security_group_rule_attributes.rb', line 7

def modify_security_group_rule_attributes(rule_id, priority, name = nil)
  args = {
    'action' => 'ModifySecurityGroupRuleAttributes',
    'security_group_rule' => rule_id,
    'security_group_rule_name' => name
  }
  request(args)
end

#reboot_instances(instance_id) ⇒ Object

Reboot specified instances API Reference



9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/reboot_instances.rb', line 9

def reboot_instances(instance_id)
  params = Fog::QingCloud.indexed_param('instances', instance_id)
  request({
    'action'    => 'RestartInstances',
  }.merge!(params))
end

#release_address(id) ⇒ Object

Release an elastic IP address. API Reference



8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/release_address.rb', line 8

def release_address(id)
  args = Fog::QingCloud.indexed_param('eips', [*id])
  args['action'] = 'ReleaseEips'
  request(args)
end

#reloadObject



188
189
190
# File 'lib/fog/qingcloud/compute.rb', line 188

def reload
  @connection.reset
end

#reset_instances(instance_id) ⇒ Object

Stop specified instance API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/reset_instances.rb', line 8

def reset_instances(instance_id)
  params = Fog::QingCloud.indexed_param('instances', instance_id)
  params['force'] = 1 if force
  request({
    'action'    => 'ResetInstances'
  }.merge!(params))
end

#resize_instances(instance_id, target_instance_type = nil, cpu = nil, memory = nil) ⇒ Object

Resize specified instance If target_instance_type is specified, cpu and memory will be ignored. Otherwise cpu and memory must be specified. API Reference



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/qingcloud/requests/compute/resize_instances.rb', line 10

def resize_instances(instance_id, target_instance_type = nil, cpu = nil, memory = nil)
  params = Fog::QingCloud.indexed_param('instances', instance_id)
  if target_instance_type
    params['instance_type'] = target_instance_type
  else
    raise Fog::QingCloud::Errors::CommonClientError, "cpu must be one of [1, 2, 4, 8, 16]." unless [1, 2, 4, 8, 16].include? cpu
    raise Fog::QingCloud::Errors::CommonClientError, "memory must be one of [512, 1024, 2048, 4096, 8192, 16384]." unless [512, 1024, 2048, 4096, 8192, 16384].include? memory

    params['cpu'] = cpu
    params['memory'] = memory

  end
  request({
    'action'    => 'ResizeInstances'
  }.merge!(params))
end

#routers_power(id, action) ⇒ Object



8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/routers_power.rb', line 8

def routers_power(id, action)
  action = action.downcase.capitalize
  args = {'action' => "Power#{action}Routers"}
  args.merge!(Fog::QingCloud.indexed_param('routers', [*id]))
  request(args)
end

#run_instances(image_id, count, options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/fog/qingcloud/requests/compute/run_instances.rb', line 5

def run_instances(image_id, count, options = {})
  vxnets = options.delete('vxnets') || []
  options.merge! Fog::QingCloud.indexed_param('vxnets', vxnets)
  request({
    'action'    => 'RunInstances',
    'image_id'   => image_id,
    'count'  => count,
  }.merge!(options))
end

#start_instances(instance_id) ⇒ Object

Start specified instance API Reference



8
9
10
11
# File 'lib/fog/qingcloud/requests/compute/start_instances.rb', line 8

def start_instances(instance_id)
  params = Fog::QingCloud.indexed_param('instances', instance_id).merge('action' => 'StartInstances')
  request(params)
end

#stop_instances(instance_id, force = false) ⇒ Object

Stop specified instance API Reference



8
9
10
11
12
13
14
# File 'lib/fog/qingcloud/requests/compute/stop_instances.rb', line 8

def stop_instances(instance_id, force = false)
  params = Fog::QingCloud.indexed_param('instances', instance_id)
  params['force'] = 1 if force
  request({
    'action'    => 'StopInstances'
  }.merge!(params))
end

#terminate_instances(instance_id) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/qingcloud/requests/compute/terminate_instances.rb', line 7

def terminate_instances(instance_id)
  params = Fog::QingCloud.indexed_param('instances', instance_id)
  request({
    'action'    => 'TerminateInstances',
  }.merge!(params))
end

#update_routers(id) ⇒ Object



7
8
9
10
11
# File 'lib/fog/qingcloud/requests/compute/update_routers.rb', line 7

def update_routers(id)
  args = {'action' => 'UpdateRouters'}
  args.merge!(Fog::QingCloud.indexed_param('routers', [*id]))
  request(args)
end

#upload_userdata_attachment(options) ⇒ Object

Delete a key pair that you own API Reference



8
9
10
# File 'lib/fog/qingcloud/requests/compute/upload_userdata_attachment.rb', line 8

def upload_userdata_attachment(options)
  request(options.merge('action' => 'UploadUserDataAttachment'))
end