make virtual router /latest/.htaccess file be static - no longer dynamically generate it, remove code that managed the file previously

Signed-off-by: Sebastien Goasguen <runseb@gmail.com>
This commit is contained in:
Fred Clift 2014-08-28 14:26:58 -06:00 committed by Sebastien Goasguen
parent 6aca8c5f39
commit 355eb72c7d
6 changed files with 32 additions and 56 deletions

View File

@ -680,6 +680,7 @@ public class VirtualRoutingResourceTest implements VirtualRouterDeployer {
protected VmDataCommand generateVmDataCommand() { protected VmDataCommand generateVmDataCommand() {
VmDataCommand cmd = new VmDataCommand("10.1.10.4", "i-4-VM", true); VmDataCommand cmd = new VmDataCommand("10.1.10.4", "i-4-VM", true);
// if you add new metadata files, also edit systemvm/patches/debian/config/var/www/html/latest/.htaccess
cmd.addVmData("userdata", "user-data", "user-data"); cmd.addVmData("userdata", "user-data", "user-data");
cmd.addVmData("metadata", "service-offering", "serviceOffering"); cmd.addVmData("metadata", "service-offering", "serviceOffering");
cmd.addVmData("metadata", "availability-zone", "zoneName"); cmd.addVmData("metadata", "availability-zone", "zoneName");

View File

@ -201,6 +201,7 @@ public class BaremetalPxeManagerImpl extends ManagerBase implements BaremetalPxe
String zoneName = _dcDao.findById(vm.getDataCenterId()).getName(); String zoneName = _dcDao.findById(vm.getDataCenterId()).getName();
NicVO nvo = _nicDao.findById(nic.getId()); NicVO nvo = _nicDao.findById(nic.getId());
VmDataCommand cmd = new VmDataCommand(nvo.getIp4Address(), vm.getInstanceName(), _ntwkModel.getExecuteInSeqNtwkElmtCmd()); VmDataCommand cmd = new VmDataCommand(nvo.getIp4Address(), vm.getInstanceName(), _ntwkModel.getExecuteInSeqNtwkElmtCmd());
// if you add new metadata files, also edit systemvm/patches/debian/config/var/www/html/latest/.htaccess
cmd.addVmData("userdata", "user-data", vm.getUserData()); cmd.addVmData("userdata", "user-data", vm.getUserData());
cmd.addVmData("metadata", "service-offering", StringUtils.unicodeEscape(serviceOffering)); cmd.addVmData("metadata", "service-offering", StringUtils.unicodeEscape(serviceOffering));
cmd.addVmData("metadata", "availability-zone", StringUtils.unicodeEscape(zoneName)); cmd.addVmData("metadata", "availability-zone", StringUtils.unicodeEscape(zoneName));

View File

@ -152,7 +152,7 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem
private VmDataCommand generateVmDataCommand(String vmPrivateIpAddress, String userData, String serviceOffering, String zoneName, String guestIpAddress, private VmDataCommand generateVmDataCommand(String vmPrivateIpAddress, String userData, String serviceOffering, String zoneName, String guestIpAddress,
String vmName, String vmInstanceName, long vmId, String vmUuid, String publicKey) { String vmName, String vmInstanceName, long vmId, String vmUuid, String publicKey) {
VmDataCommand cmd = new VmDataCommand(vmPrivateIpAddress, vmName, _networkMgr.getExecuteInSeqNtwkElmtCmd()); VmDataCommand cmd = new VmDataCommand(vmPrivateIpAddress, vmName, _networkMgr.getExecuteInSeqNtwkElmtCmd());
// if you add new metadata files, also edit systemvm/patches/debian/config/var/www/html/latest/.htaccess
cmd.addVmData("userdata", "user-data", userData); cmd.addVmData("userdata", "user-data", userData);
cmd.addVmData("metadata", "service-offering", serviceOffering); cmd.addVmData("metadata", "service-offering", serviceOffering);
cmd.addVmData("metadata", "availability-zone", zoneName); cmd.addVmData("metadata", "availability-zone", zoneName);

View File

@ -854,7 +854,7 @@ VirtualMachineGuru, Listener, Configurable, StateListener<State, VirtualMachine.
final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString()); cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString());
// if you add new metadata files, also edit systemvm/patches/debian/config/var/www/html/latest/.htaccess
cmd.addVmData("userdata", "user-data", userData); cmd.addVmData("userdata", "user-data", userData);
cmd.addVmData("metadata", "service-offering", StringUtils.unicodeEscape(serviceOffering)); cmd.addVmData("metadata", "service-offering", StringUtils.unicodeEscape(serviceOffering));
cmd.addVmData("metadata", "availability-zone", StringUtils.unicodeEscape(zoneName)); cmd.addVmData("metadata", "availability-zone", StringUtils.unicodeEscape(zoneName));

View File

@ -121,33 +121,6 @@ def createfile(ip, folder, file, data):
os.chmod(metamanifest, 0644) os.chmod(metamanifest, 0644)
def htaccess(ip, folder, file): def htaccess(ip, folder, file):
entry = "RewriteRule ^" + file + "$ ../" + folder + "/%{REMOTE_ADDR}/" + file + " [L,NC,QSA]"
htaccessFolder = "/var/www/html/latest"
htaccessFile = htaccessFolder + "/.htaccess"
try:
os.mkdir(htaccessFolder,0755)
except OSError as e:
# error 17 is already exists, we do it this way for concurrency
if e.errno != 17:
print "failed to make directories " + htaccessFolder + " due to :" +e.strerror
sys.exit(1)
if os.path.exists(htaccessFile):
fh = open(htaccessFile, "r+a")
exflock(fh)
if not entry in fh.read():
fh.write(entry + '\n')
unflock(fh)
fh.close()
else:
fh = open(htaccessFile, "w")
exflock(fh)
fh.write("Options +FollowSymLinks\nRewriteEngine On\n\n")
fh.write(entry + '\n')
unflock(fh)
fh.close()
entry="Options -Indexes\nOrder Deny,Allow\nDeny from all\nAllow from " + ip entry="Options -Indexes\nOrder Deny,Allow\nDeny from all\nAllow from " + ip
htaccessFolder = "/var/www/html/" + folder + "/" + ip htaccessFolder = "/var/www/html/" + folder + "/" + ip
htaccessFile = htaccessFolder+"/.htaccess" htaccessFile = htaccessFolder+"/.htaccess"
@ -166,24 +139,6 @@ def htaccess(ip, folder, file):
unflock(fh) unflock(fh)
fh.close() fh.close()
if folder == "metadata" or folder == "meta-data":
entry = "RewriteRule ^meta-data/(.+)$ ../" + folder + "/%{REMOTE_ADDR}/$1 [L,NC,QSA]"
htaccessFolder = "/var/www/html/latest"
htaccessFile = htaccessFolder + "/.htaccess"
fh = open(htaccessFile, "r+a")
exflock(fh)
if not entry in fh.read():
fh.write(entry + '\n')
entry = "RewriteRule ^meta-data/?$ ../" + folder + "/%{REMOTE_ADDR}/meta-data [L,NC,QSA]"
fh.seek(0)
if not entry in fh.read():
fh.write(entry + '\n')
unflock(fh)
fh.close()
def exflock(file): def exflock(file):
try: try:
flock(file, LOCK_EX) flock(file, LOCK_EX)

View File

@ -1,5 +1,24 @@
Options +FollowSymLinks Options +FollowSymLinks
RewriteEngine On RewriteEngine On
#RewriteBase /
RewriteRule ^user-data$ ../userdata/%{REMOTE_ADDR}/user-data [L,NC,QSA] #http://<routerIP>/latest/user-data and .../user-data/ (both yield user-data file)
#http://<routerIP>/latest/meta-data and .../meta-data/ (dir listing of meta-data)
RewriteRule ^user-data/?$ ../userdata/%{REMOTE_ADDR}/user-data [L,NC,QSA]
RewriteRule ^meta-data/?$ ../metadata/%{REMOTE_ADDR}/meta-data [L,NC,QSA]
#http://<routerIP/latest/meta-data/foo and .../foo/ (yield metadata/$IP/foo)
RewriteRule ^meta-data/(.+[^/])/?$ ../metadata/%{REMOTE_ADDR}/$1 [L,NC,QSA]
#http://<routerIP>/latest/foo and .../foo/ (yield metadata/$IP/foo)
#are these used?
RewriteRule ^availability-zone/?$ ../metadata/%{REMOTE_ADDR}/availability-zone [L,NC,QSA]
RewriteRule ^cloud-identifier/?$ ../metadata/%{REMOTE_ADDR}/cloud-identifier [L,NC,QSA]
RewriteRule ^instance-id/?$ ../metadata/%{REMOTE_ADDR}/instance-id [L,NC,QSA]
RewriteRule ^local-hostname/?$ ../metadata/%{REMOTE_ADDR}/local-hostname [L,NC,QSA]
RewriteRule ^local-ipv4/?$ ../metadata/%{REMOTE_ADDR}/local-ipv4 [L,NC,QSA]
RewriteRule ^public-hostname/?$ ../metadata/%{REMOTE_ADDR}/public-hostname [L,NC,QSA]
RewriteRule ^public-ipv4/?$ ../metadata/%{REMOTE_ADDR}/public-ipv4 [L,NC,QSA]
RewriteRule ^public-keys/?$ ../metadata/%{REMOTE_ADDR}/public-keys [L,NC,QSA]
RewriteRule ^service-offering/?$ ../metadata/%{REMOTE_ADDR}/service-offering [L,NC,QSA]
RewriteRule ^vm-id/?$ ../metadata/%{REMOTE_ADDR}/vm-id [L,NC,QSA]