/// <summary>
 /// 更新机器组信息,如果机器组已应用配置,则新加入、减少机器会自动增加、移除配置。
 /// </summary>
 /// <param name="client">client实例。</param>
 /// <param name="groupName">机器分组名称。</param>
 /// <param name="machineIdentifyType">机器标识类型,分为 ip 和 userdefined 两种。</param>
 /// <param name="machineList">具体的机器标识,可以是 IP 或 userdefined-id。</param>
 /// <param name="groupType">机器分组类型,默认为空。</param>
 /// <param name="groupTopic">机器分组的 topic,默认为空。</param>
 /// <param name="externalName">机器分组所依赖的外部管理标识,默认为空。</param>
 /// <param name="project">项目名,此参数将覆盖 client 中默认设置。</param>
 /// <returns>异步响应结果。</returns>
 /// <seealso cref="ILogServiceClient.UpdateMachineGroupAsync"/>
 public static Task <IResponse> UpdateMachineGroupAsync(this ILogServiceClient client,
                                                        String groupName, String machineIdentifyType, IEnumerable <String> machineList,
                                                        String groupType = null, String groupTopic = null, String externalName = null, String project = null)
 => client.UpdateMachineGroupAsync(new UpdateMachineGroupRequest(groupName, machineIdentifyType, machineList)
 {
     GroupType      = groupType,
     GroupAttribute = groupTopic == null && externalName == null
             ? null
             : new MachineGroupAttributeInfo
     {
         GroupTopic   = groupTopic,
         ExternalName = externalName
     },
     ProjectName = project
 });