def request_gce_cluster(self, ambari_agent_vm_num, docker_num, service_server_num, with_ambari_server, cluster_name): """ Request a cluster from GCE :param ambari_agent_vm_num: number of VMs to hold Docker containers :param docker_num: number of Docker containers inside each VM :param service_server_num: number of VMs which has Ambari-agent directly installed (not in Docker) :param with_ambari_server: True or False, whether to request a VM to hold Ambari-server :param cluster_name: the name of the cluster :return: None """ ambari_server_fqdn_ip_pairs = [] if with_ambari_server is True: ambari_server_fqdn_ip_pairs = self.request_ambari_server_vm(VM.get_ambari_server_vm_name(cluster_name)) service_server_fqdn_ip_pairs = self.reqeust_service_server_vm(service_server_num, VM.get_service_server_vm_name(cluster_name)) ambari_agent_fqdn_ip_pairs = self.request_agent_vm(ambari_agent_vm_num, VM.get_ambari_agent_vm_name(cluster_name)) # prepare all attributes of the cluster, write to a file self.generate_cluster_info(cluster_name, ambari_server_fqdn_ip_pairs, service_server_fqdn_ip_pairs, ambari_agent_fqdn_ip_pairs, docker_num)