SL 中自动缩放的详细信息
Detail information for Auto Scale in SL
我正在使用 Java API 实现自动缩放的详细信息。
如何获取会员配置的详细信息。请参考附图中红框内的字段。我可以获得详细信息。例如,我可以得到操作参考代码,它是CENTOS_6_64,但是我如何得到像CentOS 6.x - Minimal Install (64bit) 这样的长类型描述。
尝试使用此对象遮罩
mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount]
这里是一个使用 python 的例子:
"""
Get the scale group details (configuration).
Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getObject
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Scale_Group
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import json
USERNAME = 'set me'
API_KEY = 'set me'
scaleGroupId = 595465
# Create a SoftLayer API client object
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
scaleGroupService = client['SoftLayer_Scale_Group']
objectMask = "mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount]"
try:
scaleGroup = scaleGroupService.getObject(id=scaleGroupId, mask=objectMask)
config = {}
config['groupDetails'] = {}
config['groupDetails']['groupName'] = scaleGroup['name']
config['groupDetails']['region'] = scaleGroup['regionalGroup']['name']
config['groupDetails']['datacenter'] = scaleGroup['regionalGroup']['name']
config['groupDetails']['terminationPolicy'] = scaleGroup['terminationPolicy']['name']
config['groupSettings'] = {}
config['groupSettings']['minimumMemberCount'] = scaleGroup['minimumMemberCount']
config['groupSettings']['maximumMemberCount'] = scaleGroup['maximumMemberCount']
config['groupSettings']['cooldown'] = str(scaleGroup['cooldown'] / 60) + " Minutes"
config['memberDetails'] = {}
config['memberDetails']['hostname'] = scaleGroup['virtualGuestMemberTemplate']['hostname']
config['memberDetails']['domain'] = scaleGroup['virtualGuestMemberTemplate']['domain']
config['computingInstance'] = {}
config['computingInstance']['cores'] = str(scaleGroup['virtualGuestMemberTemplate']['startCpus']) + "x 2.0 GHz Core"
config['computingInstance']['ram'] = str(scaleGroup['virtualGuestMemberTemplate']['maxMemory'] / 1024) + "GB"
if 'networkComponents' in scaleGroup['virtualGuestMemberTemplate']:
config['computingInstance']['speed'] = scaleGroup['virtualGuestMemberTemplate']['networkComponents'][0]['maxSpeed']
else:
config['computingInstance']['speed'] = "Default"
if 'sshKeys' in scaleGroup['virtualGuestMemberTemplate']:
config['computingInstance']['sshKeys'] = scaleGroup['virtualGuestMemberTemplate']['sshKeys']
else:
config['computingInstance']['sshKeys'] = 'None'
config['storage'] = {}
if scaleGroup['virtualGuestMemberTemplate']['localDiskFlag']:
config['storage']['selectedStorage'] = 'Local Storage'
else:
config['storage']['selectedStorage'] = 'SAN Storage'
config['operatingSystem'] = {}
config['operatingSystem']['selectedOperatingSystem'] = scaleGroup['virtualGuestMemberTemplate']['operatingSystemReferenceCode']
config['postInstallScript'] = {}
config['postInstallScript']['url'] = scaleGroup['virtualGuestMemberTemplate']['postInstallScriptUri']
config['policies'] = scaleGroup['policies']
print(json.dumps(config, sort_keys=True, indent=2, separators=(',', ': ')))
except SoftLayer.SoftLayerAPIError as e:
print("Unable to get the scale group details. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))
但如果你尝试复制与传送门相同的信息,你真的会玩得很开心:)。
关于OS无法通过SoftLayer_Scale_Group服务获取信息,需要使用SoftLayer_Virtual_Guest::getCreateObjectOptions方法。如果您看到该方法的结果,您将看到:
{
"itemPrice": {
"hourlyRecurringFee": "0",
"recurringFee": "0",
"item": {
"description": "CentOS 6.x - Minimal Install (64 bit)"
}
},
"template": {
"id": null,
"operatingSystemReferenceCode": "CENTOS_6_64"
}
}
正如你所看到的结果包含 "operatingSystemReferenceCode" 和你想要的描述,所以只需要查找与你使用 "operatingSystemReferenceCode" 值匹配的记录 SoftLayer_Scale_Group::getObject方法。
关于网络私有或者public,这里只能有以下场景:
1.- public 并且已设置私有。
2.- 只设置了私有。
确定您必须检查"privateNetworkOnlyFlag" 属性:
1.- 如果 属性 为真,网络是私有的
2.- 如果未设置 属性(默认值为 false),则网络为 public 且私有。
为了获得与门户相同的描述,您需要使用 SoftLayer_Virtual_Guest::getCreateObjectOptions 方法,这是您获得的结果:
"networkComponents": [
{
"itemPrice": {
"hourlyRecurringFee": "0",
"recurringFee": "0",
"item": {
"description": "10 Mbps Public & Private Network Uplinks"
}
},
"template": {
"id": null,
"networkComponents": [
{
"maxSpeed": 10
}
],
"privateNetworkOnlyFlag": false
}
}
如您所见,这个想法与操作系统相同。
关于数据中心 "First Available",我猜当你调用 SoftLayer_Scale_Group::getObject 我猜 virtualGuestMemberTemplate.datacenter 属性 是空的或不存在,如果你看到您可以将值显示为 "First Available".
此致
这是获取网络标志的测试代码。
标志 returns "true",但门户显示 "Public & Private Network"。
private void getPrivateNetwork() {
Group.Service groupSrv = Group.service(client, 1046365L);
groupSrv.withMask().virtualGuestMemberTemplate().privateNetworkOnlyFlag();
Group result = groupSrv.getObject();
System.out.println(
"private Network flag : " + result.getVirtualGuestMemberTemplate().getPrivateNetworkOnlyFlag());
}
我正在使用 Java API 实现自动缩放的详细信息。
如何获取会员配置的详细信息。请参考附图中红框内的字段。我可以获得详细信息。例如,我可以得到操作参考代码,它是CENTOS_6_64,但是我如何得到像CentOS 6.x - Minimal Install (64bit) 这样的长类型描述。
尝试使用此对象遮罩
mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount]
这里是一个使用 python 的例子:
"""
Get the scale group details (configuration).
Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getObject
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Scale_Group
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import json
USERNAME = 'set me'
API_KEY = 'set me'
scaleGroupId = 595465
# Create a SoftLayer API client object
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
scaleGroupService = client['SoftLayer_Scale_Group']
objectMask = "mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount]"
try:
scaleGroup = scaleGroupService.getObject(id=scaleGroupId, mask=objectMask)
config = {}
config['groupDetails'] = {}
config['groupDetails']['groupName'] = scaleGroup['name']
config['groupDetails']['region'] = scaleGroup['regionalGroup']['name']
config['groupDetails']['datacenter'] = scaleGroup['regionalGroup']['name']
config['groupDetails']['terminationPolicy'] = scaleGroup['terminationPolicy']['name']
config['groupSettings'] = {}
config['groupSettings']['minimumMemberCount'] = scaleGroup['minimumMemberCount']
config['groupSettings']['maximumMemberCount'] = scaleGroup['maximumMemberCount']
config['groupSettings']['cooldown'] = str(scaleGroup['cooldown'] / 60) + " Minutes"
config['memberDetails'] = {}
config['memberDetails']['hostname'] = scaleGroup['virtualGuestMemberTemplate']['hostname']
config['memberDetails']['domain'] = scaleGroup['virtualGuestMemberTemplate']['domain']
config['computingInstance'] = {}
config['computingInstance']['cores'] = str(scaleGroup['virtualGuestMemberTemplate']['startCpus']) + "x 2.0 GHz Core"
config['computingInstance']['ram'] = str(scaleGroup['virtualGuestMemberTemplate']['maxMemory'] / 1024) + "GB"
if 'networkComponents' in scaleGroup['virtualGuestMemberTemplate']:
config['computingInstance']['speed'] = scaleGroup['virtualGuestMemberTemplate']['networkComponents'][0]['maxSpeed']
else:
config['computingInstance']['speed'] = "Default"
if 'sshKeys' in scaleGroup['virtualGuestMemberTemplate']:
config['computingInstance']['sshKeys'] = scaleGroup['virtualGuestMemberTemplate']['sshKeys']
else:
config['computingInstance']['sshKeys'] = 'None'
config['storage'] = {}
if scaleGroup['virtualGuestMemberTemplate']['localDiskFlag']:
config['storage']['selectedStorage'] = 'Local Storage'
else:
config['storage']['selectedStorage'] = 'SAN Storage'
config['operatingSystem'] = {}
config['operatingSystem']['selectedOperatingSystem'] = scaleGroup['virtualGuestMemberTemplate']['operatingSystemReferenceCode']
config['postInstallScript'] = {}
config['postInstallScript']['url'] = scaleGroup['virtualGuestMemberTemplate']['postInstallScriptUri']
config['policies'] = scaleGroup['policies']
print(json.dumps(config, sort_keys=True, indent=2, separators=(',', ': ')))
except SoftLayer.SoftLayerAPIError as e:
print("Unable to get the scale group details. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))
但如果你尝试复制与传送门相同的信息,你真的会玩得很开心:)。
关于OS无法通过SoftLayer_Scale_Group服务获取信息,需要使用SoftLayer_Virtual_Guest::getCreateObjectOptions方法。如果您看到该方法的结果,您将看到:
{
"itemPrice": {
"hourlyRecurringFee": "0",
"recurringFee": "0",
"item": {
"description": "CentOS 6.x - Minimal Install (64 bit)"
}
},
"template": {
"id": null,
"operatingSystemReferenceCode": "CENTOS_6_64"
}
}
正如你所看到的结果包含 "operatingSystemReferenceCode" 和你想要的描述,所以只需要查找与你使用 "operatingSystemReferenceCode" 值匹配的记录 SoftLayer_Scale_Group::getObject方法。
关于网络私有或者public,这里只能有以下场景: 1.- public 并且已设置私有。 2.- 只设置了私有。
确定您必须检查"privateNetworkOnlyFlag" 属性: 1.- 如果 属性 为真,网络是私有的 2.- 如果未设置 属性(默认值为 false),则网络为 public 且私有。
为了获得与门户相同的描述,您需要使用 SoftLayer_Virtual_Guest::getCreateObjectOptions 方法,这是您获得的结果:
"networkComponents": [
{
"itemPrice": {
"hourlyRecurringFee": "0",
"recurringFee": "0",
"item": {
"description": "10 Mbps Public & Private Network Uplinks"
}
},
"template": {
"id": null,
"networkComponents": [
{
"maxSpeed": 10
}
],
"privateNetworkOnlyFlag": false
}
}
如您所见,这个想法与操作系统相同。
关于数据中心 "First Available",我猜当你调用 SoftLayer_Scale_Group::getObject 我猜 virtualGuestMemberTemplate.datacenter 属性 是空的或不存在,如果你看到您可以将值显示为 "First Available".
此致
这是获取网络标志的测试代码。 标志 returns "true",但门户显示 "Public & Private Network"。
private void getPrivateNetwork() {
Group.Service groupSrv = Group.service(client, 1046365L);
groupSrv.withMask().virtualGuestMemberTemplate().privateNetworkOnlyFlag();
Group result = groupSrv.getObject();
System.out.println(
"private Network flag : " + result.getVirtualGuestMemberTemplate().getPrivateNetworkOnlyFlag());
}