blob: 7035d70626d8b04e232acb14e29fc427339e6b07 [file] [log] [blame]
/*
* 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 org.jclouds.azurecompute.util;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.jclouds.azurecompute.domain.NetworkSecurityGroup;
import org.jclouds.azurecompute.domain.Rule;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
public class NetworkSecurityGroups {
public static List<Rule> getCustomRules(final NetworkSecurityGroup networkSecurityGroup) {
final List<Rule> rules = networkSecurityGroup.rules();
return FluentIterable.from(rules)
.filter(Predicates.notNull())
.filter(new Predicate<Rule>() {
@Override
public boolean apply(final Rule rule) {
return rule.isDefault() == null || !rule.isDefault();
}
})
.toSortedList(new Comparator<Rule>() {
@Override
public int compare(final Rule r1, final Rule r2) {
final int p1 = Integer.parseInt(r1.priority());
final int p2 = Integer.parseInt(r2.priority());
return p1 < p2 ? -1 : p1 == p2 ? 0 : 1;
}
});
}
public static int getFirstAvailablePriority(final List<Rule> rules) {
int priority;
if (rules.isEmpty()) {
priority = 100;
} else {
priority = Integer.parseInt(Collections.max(rules, new Comparator<Rule>() {
@Override
public int compare(final Rule rule1, final Rule rule2) {
return Integer.valueOf(rule1.priority()).compareTo(Integer.valueOf(rule2.priority()));
}
}).priority()) + 1;
}
return priority;
}
public static String createRuleName(final String format, final int fromPort, final int toPort) {
return String.format(format, fromPort, toPort);
}
}