mirror of https://github.com/apache/jclouds.git
issue 384: change getIpAddress to exportIpAddressFromVmName, removed windows test TODO
This commit is contained in:
parent
0b3edf3c1e
commit
735bf558d7
|
@ -0,0 +1,40 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.virtualbox.domain;
|
||||||
|
|
||||||
|
import org.jclouds.scriptbuilder.domain.Call;
|
||||||
|
import org.jclouds.scriptbuilder.domain.Statement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VboxManage statements used in shell scripts .
|
||||||
|
*
|
||||||
|
* @author Andrea Turli
|
||||||
|
*/
|
||||||
|
public class Statements {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract the IP address from the specified vm and stores the IP address into the variable {@code FOUND_IP_ADDRESS} if successful.
|
||||||
|
*
|
||||||
|
* @param vmname
|
||||||
|
* - the vm name
|
||||||
|
*/
|
||||||
|
public static Statement exportIpAddressFromVmNamed(String vmName) {
|
||||||
|
return new Call("exportIpAddressFromVmNamed", vmName);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
function exportIpAddressFromVmNamed {
|
||||||
|
unset FOUND_IP_ADDRESS;
|
||||||
|
[ $# -eq 1 ] || {
|
||||||
|
abort "installGuestAdditions requires virtual machine name parameter"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
local VMNAME="$0"; shift
|
||||||
|
local _FOUND=`vboxmanage guestproperty enumerate "$VMNAME" --patterns "/VirtualBox/GuestInfo/Net/0/V4/IP" | awk '{ print $4 }' | cut -c 1-14`
|
||||||
|
[ -n "$_FOUND" ] && {
|
||||||
|
export FOUND_IP_ADDRESS=$_FOUND
|
||||||
|
echo [$FOUND_IP_ADDRESS]
|
||||||
|
return 0
|
||||||
|
} || {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.virtualbox.domain;
|
||||||
|
|
||||||
|
import static org.jclouds.scriptbuilder.domain.Statements.interpret;
|
||||||
|
import static org.jclouds.virtualbox.domain.Statements.exportIpAddressFromVmNamed;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.jclouds.scriptbuilder.ScriptBuilder;
|
||||||
|
import org.jclouds.scriptbuilder.domain.OsFamily;
|
||||||
|
import org.jclouds.scriptbuilder.domain.ShellToken;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
|
import com.google.common.io.CharStreams;
|
||||||
|
import com.google.common.io.Resources;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Andrea Turli
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit")
|
||||||
|
public class ExportIpAddressForVMNamedTest {
|
||||||
|
|
||||||
|
ScriptBuilder exportIpAddressForVMNamedBuilder = new ScriptBuilder()
|
||||||
|
.addStatement(exportIpAddressFromVmNamed("{args}"))
|
||||||
|
.addStatement(interpret("echo {varl}FOUND_IP_ADDRESS{varr}{lf}"));
|
||||||
|
|
||||||
|
public void testUNIX() throws IOException {
|
||||||
|
assertEquals(exportIpAddressForVMNamedBuilder.render(OsFamily.UNIX), CharStreams.toString(Resources.newReaderSupplier(Resources
|
||||||
|
.getResource("test_export_ip_address_from_vm_named." + ShellToken.SH.to(OsFamily.UNIX)), Charsets.UTF_8)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set +u
|
||||||
|
shopt -s xpg_echo
|
||||||
|
shopt -s expand_aliases
|
||||||
|
unset PATH JAVA_HOME LD_LIBRARY_PATH
|
||||||
|
function abort {
|
||||||
|
echo "aborting: $@" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
function exportIpAddressFromVmNamed {
|
||||||
|
unset FOUND_IP_ADDRESS;
|
||||||
|
[ $# -eq 1 ] || {
|
||||||
|
abort "installGuestAdditions requires virtual machine name parameter"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
local VMNAME="$0"; shift
|
||||||
|
local _FOUND=`vboxmanage guestproperty enumerate "$VMNAME" --patterns "/VirtualBox/GuestInfo/Net/0/V4/IP" | awk '{ print $4 }' | cut -c 1-14`
|
||||||
|
[ -n "$_FOUND" ] && {
|
||||||
|
export FOUND_IP_ADDRESS=$_FOUND
|
||||||
|
echo [$FOUND_IP_ADDRESS]
|
||||||
|
return 0
|
||||||
|
} || {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export PATH=/usr/ucb/bin:/bin:/sbin:/usr/bin:/usr/sbin
|
||||||
|
exportIpAddressFromVmNamed $@ || exit 1
|
||||||
|
echo $FOUND_IP_ADDRESS
|
||||||
|
exit 0
|
Loading…
Reference in New Issue