// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.test.utils;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.StringTokenizer;

public class IpSqlGenerator {
	public static void main (String[] args) {
		try {
			if (args.length != 5) {
				System.out.println("Usage -- generate-ip.sh <public|private> <begin ip range> <end ip range> <data center id> <pod id>");
				System.out.println("Example -- generate-ip.sh public 192.168.1.1 192.168.1.255 1 1");
				System.out.println("  will generate ips ranging from public ips 192.168.1.1 to 192.168.1.255 for dc 1 and pod 1");
				return;
			}
			
			String type = args[0];
			
			StringTokenizer st = new StringTokenizer(args[1], ".");
			int ipS1 = Integer.parseInt(st.nextToken());
			int ipS2 = Integer.parseInt(st.nextToken());
			int ipS3 = Integer.parseInt(st.nextToken());
			int ipS4 = Integer.parseInt(st.nextToken());
			
			st = new StringTokenizer(args[2], ".");
			int ipE1 = Integer.parseInt(st.nextToken());
			int ipE2 = Integer.parseInt(st.nextToken());
			int ipE3 = Integer.parseInt(st.nextToken());
			int ipE4 = Integer.parseInt(st.nextToken());
			
			String dcId = args[3];
			String podId = args[4];
			
			if (type.equals("private")) {
				FileOutputStream fs = new FileOutputStream(new File("private-ips.sql"));
				DataOutputStream out = new DataOutputStream(fs);
				for (int i = ipS1; i <= ipE1; i++) {
					for (int j = ipS2; j <= ipE2; j++) {
						for (int k = ipS3; k <= ipE3; k++) {
							for (int l = ipS4; l <= ipE4; l++) {
								out.writeBytes("INSERT INTO `vmops`.`dc_ip_address_alloc` (ip_address, data_center_id, pod_id) VALUES ('" 
										+ i + "." + j + "." + k + "." + l + "'," + dcId + "," + podId + ");\r\n");
							}
						}
					}
				}
				out.writeBytes("\r\n");
				out.flush();
				out.close();
			} else {
				FileOutputStream fs = new FileOutputStream(new File("public-ips.sql"));
				DataOutputStream out = new DataOutputStream(fs);
				for (int i = ipS1; i <= ipE1; i++) {
					for (int j = ipS2; j <= ipE2; j++) {
						for (int k = ipS3; k <= ipE3; k++) {
							for (int l = ipS4; l <= ipE4; l++) {
								out.writeBytes("INSERT INTO `vmops`.`user_ip_address` (ip_address, data_center_id) VALUES ('" 
										+ i + "." + j + "." + k + "." + l + "'," + dcId + ");\r\n");
							}
						}
					}
				}
				out.writeBytes("\r\n");
				out.flush();
				out.close();
			}
		} catch (Exception e) {
			
		}
	}
}
