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

@ -6,9 +6,9 @@
# to you under the Apache License, Version 2.0 (the # to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance # "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at # with the License. You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # http://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, # Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an # software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@ -64,7 +64,7 @@ def main(argv):
deletefile(ip, folder, file) deletefile(ip, folder, file)
else: else:
createfile(ip, folder, file, data) createfile(ip, folder, file, data)
if fpath != '': if fpath != '':
fh.close() fh.close()
os.remove(fpath) os.remove(fpath)
@ -77,7 +77,7 @@ def deletefile(ip, folder, file):
def createfile(ip, folder, file, data): def createfile(ip, folder, file, data):
dest = "/var/www/html/" + folder + "/" + ip + "/" + file dest = "/var/www/html/" + folder + "/" + ip + "/" + file
metamanifestdir = "/var/www/html/" + folder + "/" + ip metamanifestdir = "/var/www/html/" + folder + "/" + ip
metamanifest = metamanifestdir + "/meta-data" metamanifest = metamanifestdir + "/meta-data"
# base64 decode userdata # base64 decode userdata
@ -105,7 +105,7 @@ def createfile(ip, folder, file, data):
sys.exit(1) sys.exit(1)
if os.path.exists(metamanifest): if os.path.exists(metamanifest):
fh = open(metamanifest, "r+a") fh = open(metamanifest, "r+a")
exflock(fh) exflock(fh)
if not file in fh.read(): if not file in fh.read():
fh.write(file + '\n') fh.write(file + '\n')
unflock(fh) unflock(fh)
@ -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)
@ -191,7 +146,7 @@ def exflock(file):
print "failed to lock file" + file.name + " due to : " + e.strerror print "failed to lock file" + file.name + " due to : " + e.strerror
sys.exit(1) sys.exit(1)
return True return True
def unflock(file): def unflock(file):
try: try:
flock(file, LOCK_UN) flock(file, LOCK_UN)

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]