mirror of https://github.com/apache/cloudstack.git
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-cloudstack
Conflicts: tools/devcloud/devcloudsetup.sh
This commit is contained in:
commit
5f4728beb6
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
<target name="rdeploydb">
|
||||
<echo message="ant rdeploydb"/>
|
||||
<sshexec host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;killall java;service cloud-management stop;cd /opt/cloudstack/incubator-cloudstack;ant deploycddb -Drhost=${host}"/>
|
||||
<sshexec trust="yes" host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;killall java;service cloud-management stop;cd /opt/cloudstack/incubator-cloudstack;ant deploycddb -Drhost=${host}"/>
|
||||
</target>
|
||||
|
||||
<target name="deploycddb" description="deploy specific db configuration for clouddev" depends="deploydb">
|
||||
|
|
@ -50,10 +50,10 @@
|
|||
<echo message="ant debug-suspend"/>
|
||||
<sshexec host="${host}" port="${port}" username="root" password="password" command="killall java;service cloud-management stop;sleep 1;echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server;ant debug-suspend"/>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="rdebug">
|
||||
<echo message="ant debug"/>
|
||||
<sshexec host="${host}" port="${port}" username="root" password="password" command="killall java;service cloud-management stop;sleep 1;export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server; ant debug "/>
|
||||
<sshexec trust="yes" host="${host}" port="${port}" username="root" password="password" command="killall java;service cloud-management stop;sleep 1;export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server; ant debug "/>
|
||||
</target>
|
||||
|
||||
|
||||
|
|
@ -61,38 +61,38 @@
|
|||
<condition property="zip.uptodate">
|
||||
<available file="${deploy.work.dir}/client.zip" type="file"/>
|
||||
</condition>
|
||||
|
||||
|
||||
|
||||
|
||||
<echo message="copying build folder to remote"/>
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/build">
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/build">
|
||||
<fileset dir="build">
|
||||
</fileset>
|
||||
</scp>
|
||||
|
||||
<scp trust="yes" port="${port}" file="build.xml" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/">
|
||||
<scp trust="yes" port="${port}" file="build.xml" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/">
|
||||
</scp>
|
||||
|
||||
<echo message="copying deps folder to remote"/>
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/deps">
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/deps">
|
||||
<fileset dir="deps">
|
||||
</fileset>
|
||||
</scp>
|
||||
|
||||
<echo message="copying target folder to remote"/>
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/target">
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/target">
|
||||
<fileset dir="target">
|
||||
</fileset>
|
||||
</scp>
|
||||
|
||||
<echo message="copying dist folder to remote"/>
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/dist">
|
||||
<scp trust="yes" port="${port}" todir="root:password@${host}:/opt/cloudstack/incubator-cloudstack/dist">
|
||||
<fileset dir="dist">
|
||||
</fileset>
|
||||
</scp>
|
||||
|
||||
<sshexec host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server"/>
|
||||
|
||||
<sshexec trust="yes" host="${host}" port="${port}" username="root" password="password" command="echo $CATALINA_HOME; export CATALINA_HOME=/opt/cloudstack/apache-tomcat-6.0.32;cd /opt/cloudstack/incubator-cloudstack;ant deploy-server"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@ install_xen() {
|
|||
aptitude update
|
||||
echo "install xen"
|
||||
aptitude -y install linux-headers-3.2.0-23-generic-pae
|
||||
aptitude -y install xen-hypervisor-4.1 xcp-xapi
|
||||
aptitude -y install xen-hypervisor-4.1-i386 xcp-xapi
|
||||
echo "configure xen"
|
||||
|
||||
sed -i -e 's/xend_start$/#xend_start/' -e 's/xend_stop$/#xend_stop/' /etc/init.d/xend
|
||||
update-rc.d xendomains disable
|
||||
|
||||
sed -i 's/GRUB_DEFAULT=.\+/GRUB_DEFAULT="Xen 4.1-amd64"/' /etc/default/grub
|
||||
sed -i 's/GRUB_DEFAULT=.\+/GRUB_DEFAULT="Xen 4.1-i386"/' /etc/default/grub
|
||||
echo 'GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M,max:512M"' | cat /etc/default/grub - >> /etc/default/newgrub
|
||||
mv /etc/default/newgrub /etc/default/grub
|
||||
update-grub
|
||||
|
|
@ -49,6 +49,8 @@ iface xenbr0 inet dhcp
|
|||
|
||||
auto eth0
|
||||
iface eth0 inet dhcp
|
||||
pre-up iptables-save < /etc/iptables.save
|
||||
pre-up /etc/init.d/ebtables load
|
||||
EOF
|
||||
|
||||
echo TOOLSTACK=xapi > /etc/default/xen
|
||||
|
|
@ -68,6 +70,14 @@ postsetup() {
|
|||
print "xen dom0 is not running, make sure dom0 is installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#disable virtualbox dhcp server for Vms created by cloudstack
|
||||
apt-get install ebtables
|
||||
iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill
|
||||
mac=`ifconfig xenbr0 |grep HWaddr |awk '{print $5}'`
|
||||
ebtables -I FORWARD -d ! $mac -i eth0 -p IPV4 --ip-prot udp --ip-dport 67:68 -j DROP
|
||||
iptables-save > /etc/iptables.save
|
||||
/etc/init.d/ebtables save
|
||||
|
||||
echo "configure NFS server"
|
||||
aptitude -y install nfs-server
|
||||
|
|
|
|||
|
|
@ -6595,6 +6595,11 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
.multi-edit {
|
||||
}
|
||||
|
||||
.multi-edit > form {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.multi-edit table.multi-edit {
|
||||
border-top: none;
|
||||
}
|
||||
|
|
@ -6926,6 +6931,34 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
margin: 0 22px 0 0;
|
||||
}
|
||||
|
||||
/** Header fields*/
|
||||
.multi-edit .header-fields {
|
||||
position: relative;
|
||||
/*+placement:shift 8px 11px;*/
|
||||
position: relative;
|
||||
left: 8px;
|
||||
top: 11px;
|
||||
}
|
||||
|
||||
.multi-edit .header-fields .form-item {
|
||||
margin-bottom: 32px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.multi-edit .header-fields .form-item .name,
|
||||
.multi-edit .header-fields .form-item .value {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.multi-edit .header-fields .form-item .name {
|
||||
font-size: 14px;
|
||||
padding: 5px;
|
||||
color: #55687A;
|
||||
}
|
||||
|
||||
.multi-edit .header-fields input[type=submit] {
|
||||
}
|
||||
|
||||
/*Security Rules*/
|
||||
.security-rules .multi-edit input {
|
||||
width: 69px;
|
||||
|
|
@ -9233,6 +9266,34 @@ div.panel.ui-dialog div.list-view div.fixed-header {
|
|||
width: 46px;
|
||||
}
|
||||
|
||||
/*VPC: Enable Static NAT fields*/
|
||||
.list-view.instances .filters.tier-select {
|
||||
width: 246px;
|
||||
/*+border-radius:4px;*/
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background: #8F98A1;
|
||||
padding: 2px 20px 2px 13px;
|
||||
margin: 1px 120px 0 19px;
|
||||
border: 1px solid #000000;
|
||||
}
|
||||
|
||||
.list-view.instances .filters.tier-select label {
|
||||
color: #FFFFFF;
|
||||
/*+text-shadow:0px 1px 3px #000000;*/
|
||||
-moz-text-shadow: 0px 1px 3px #000000;
|
||||
-webkit-text-shadow: 0px 1px 3px #000000;
|
||||
-o-text-shadow: 0px 1px 3px #000000;
|
||||
text-shadow: 0px 1px 3px #000000;
|
||||
}
|
||||
|
||||
.list-view.instances .filters.tier-select select {
|
||||
width: 166px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/*Configure ACL dialog*/
|
||||
.ui-dialog.configure-acl {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@
|
|||
label: 'label.add.guest.network',
|
||||
|
||||
preFilter: function(args) {
|
||||
var basicZoneExists = false;
|
||||
var basicZoneExists = true; //Modifying the logic behind displaying the tabs depending on the networktype
|
||||
$.ajax({
|
||||
url: createURL("listZones"),
|
||||
dataType: "json",
|
||||
|
|
@ -206,8 +206,8 @@
|
|||
if(json.listzonesresponse.zone != null && json.listzonesresponse.zone.length > 0) {
|
||||
zoneObjs = json.listzonesresponse.zone;
|
||||
$(zoneObjs).each(function() {
|
||||
if(this.networktype == "Basic") {
|
||||
basicZoneExists = true;
|
||||
if(this.networktype == "Advanced") {
|
||||
basicZoneExists = false; // For any occurence of an Advanced zone with any combination of basic zone , the add guest network tab will be displayed
|
||||
return false; //break each loop
|
||||
}
|
||||
});
|
||||
|
|
@ -1230,9 +1230,28 @@
|
|||
},
|
||||
enableStaticNAT: {
|
||||
label: 'label.action.enable.static.NAT',
|
||||
|
||||
action: {
|
||||
noAdd: true,
|
||||
custom: cloudStack.uiCustom.enableStaticNAT({
|
||||
// VPC
|
||||
tierSelect: function(args) {
|
||||
args.$tierSelect.hide(); // Hidden by default
|
||||
|
||||
// Determine if tiers are supported here
|
||||
var enableTiers = false;
|
||||
|
||||
if (enableTiers) {
|
||||
args.$tierSelect.show();
|
||||
args.response.success({
|
||||
data: [
|
||||
{ id: '1', description: 'VPC 1' },
|
||||
{ id: '2', description: 'VPC 2' }
|
||||
]
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
listView: $.extend(true, {}, cloudStack.sections.instances, {
|
||||
listView: {
|
||||
dataProvider: function(args) {
|
||||
|
|
@ -1949,6 +1968,21 @@
|
|||
}
|
||||
}
|
||||
}),
|
||||
headerFields: {
|
||||
tier: {
|
||||
label: 'Tier',
|
||||
select: function(args) {
|
||||
args.response.success({
|
||||
data: [
|
||||
{ id: '', name: '', description: 'None' },
|
||||
{ id: '1', name: 'tier1', description: 'tier1' },
|
||||
{ id: '2', name: 'tier2', description: 'tier2' },
|
||||
{ id: '3', name: 'tier3', description: 'tier3' }
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
multipleAdd: true,
|
||||
fields: {
|
||||
'name': { edit: true, label: 'label.name', isEditable: true },
|
||||
|
|
@ -1967,6 +2001,7 @@
|
|||
});
|
||||
}
|
||||
},
|
||||
|
||||
'sticky': {
|
||||
label: 'label.stickiness',
|
||||
custom: {
|
||||
|
|
@ -2178,7 +2213,9 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
dataProvider: function(args) {
|
||||
dataProvider: function(args) {
|
||||
var $multi = args.$multi;
|
||||
|
||||
$.ajax({
|
||||
url: createURL('listLoadBalancerRules'),
|
||||
data: {
|
||||
|
|
@ -2273,11 +2310,36 @@
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Check if tiers are present; hide/show header drop-down
|
||||
var hasTiers = false;
|
||||
var $headerFields = $multi.find('.header-fields');
|
||||
|
||||
if (hasTiers) {
|
||||
$headerFields.hide();
|
||||
} else {
|
||||
$headerFields.show();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Port forwarding rules
|
||||
portForwarding: {
|
||||
headerFields: {
|
||||
tier: {
|
||||
label: 'Tier',
|
||||
select: function(args) {
|
||||
args.response.success({
|
||||
data: [
|
||||
{ id: '', name: '', description: 'None' },
|
||||
{ id: '1', name: 'tier1', description: 'tier1' },
|
||||
{ id: '2', name: 'tier2', description: 'tier2' },
|
||||
{ id: '3', name: 'tier3', description: 'tier3' }
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
listView: $.extend(true, {}, cloudStack.sections.instances, {
|
||||
listView: {
|
||||
dataProvider: function(args) {
|
||||
|
|
@ -2413,6 +2475,8 @@
|
|||
}
|
||||
},
|
||||
dataProvider: function(args) {
|
||||
var $multi = args.$multi;
|
||||
|
||||
$.ajax({
|
||||
url: createURL('listPortForwardingRules'),
|
||||
data: {
|
||||
|
|
@ -2464,6 +2528,16 @@
|
|||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Check if tiers are present; hide/show header drop-down
|
||||
var hasTiers = false;
|
||||
var $headerFields = $multi.find('.header-fields');
|
||||
|
||||
if (hasTiers) {
|
||||
$headerFields.hide();
|
||||
} else {
|
||||
$headerFields.show();
|
||||
}
|
||||
},
|
||||
error: function(data) {
|
||||
args.response.error(parseXMLHttpResponse(data));
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
cloudStack.uiCustom.enableStaticNAT = function(args) {
|
||||
var listView = args.listView;
|
||||
var action = args.action;
|
||||
var tierSelect = args.tierSelect;
|
||||
|
||||
return function(args) {
|
||||
var context = args.context;
|
||||
|
|
@ -86,6 +87,7 @@
|
|||
|
||||
$dataList.fadeOut(function() {
|
||||
action({
|
||||
tierID: $dataList.find('.tier-select select').val(),
|
||||
context: $.extend(true, {}, context, {
|
||||
instances: [
|
||||
$dataList.find('tr.multi-edit-selected').data('json-obj')
|
||||
|
|
@ -124,6 +126,38 @@
|
|||
}
|
||||
]
|
||||
}).parent('.ui-dialog').overlay();
|
||||
|
||||
// Add tier select dialog
|
||||
if (tierSelect) {
|
||||
var $toolbar = $dataList.find('.toolbar');
|
||||
var $tierSelect = $('<div>').addClass('filters tier-select').prependTo($toolbar);
|
||||
var $tierSelectLabel = $('<label>').html('Select tier').appendTo($tierSelect);
|
||||
var $tierSelectInput = $('<select>').appendTo($tierSelect);
|
||||
|
||||
// Get tier data
|
||||
tierSelect({
|
||||
context: context,
|
||||
$tierSelect: $tierSelect,
|
||||
response: {
|
||||
success: function(args) {
|
||||
var data = args.data;
|
||||
|
||||
$(data).map(function(index, item) {
|
||||
var $option = $('<option>');
|
||||
|
||||
$option.attr('value', item.id);
|
||||
$option.html(item.description);
|
||||
$option.appendTo($tierSelectInput);
|
||||
});
|
||||
},
|
||||
error: function(message) {
|
||||
cloudStack.dialog.notice({
|
||||
message: message ? message : 'Could not retrieve VPC tiers'
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
}(cloudStack, jQuery));
|
||||
|
|
@ -15,6 +15,10 @@
|
|||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
(function($, cloudStack) {
|
||||
var getMultiData = function($multi) {
|
||||
return cloudStack.serializeForm($multi.find('form'));
|
||||
};
|
||||
|
||||
var _medit = cloudStack.ui.widgets.multiEdit = {
|
||||
/**
|
||||
* Append item to list
|
||||
|
|
@ -362,6 +366,7 @@
|
|||
var $listView;
|
||||
var instances = $.extend(true, {}, listView, {
|
||||
context: $.extend(true, {}, context, {
|
||||
multiData: getMultiData($multi),
|
||||
multiRule: options.multiRule ? [options.multiRule] : null
|
||||
}),
|
||||
uiCustom: true
|
||||
|
|
@ -755,6 +760,25 @@
|
|||
}
|
||||
});
|
||||
|
||||
// Setup header fields
|
||||
var showHeaderFields = args.headerFields ? true : false;
|
||||
var headerForm = showHeaderFields ? cloudStack.dialog.createForm({
|
||||
context: context,
|
||||
noDialog: true,
|
||||
form: {
|
||||
fields: args.headerFields
|
||||
},
|
||||
after: function(args) {
|
||||
// Form fields are handled by main 'add' action
|
||||
}
|
||||
}) : null;
|
||||
var $headerFields = $('<div>').addClass('header-fields');
|
||||
|
||||
if (headerForm) {
|
||||
$headerFields.append(headerForm.$formContainer)
|
||||
.prependTo($multi);
|
||||
}
|
||||
|
||||
if (args.actions && !args.noHeaderActionsColumn) {
|
||||
$thead.append($('<th></th>').html(_l('label.actions')).addClass('multi-actions'));
|
||||
$inputForm.append($('<td></td>').addClass('multi-actions'));
|
||||
|
|
@ -772,7 +796,7 @@
|
|||
var addItem = function(itemData) {
|
||||
var data = {};
|
||||
|
||||
$.each(cloudStack.serializeForm($multiForm), function(key, value) {
|
||||
$.each(getMultiData($multi), function(key, value) {
|
||||
if (value != '') {
|
||||
data[key] = value;
|
||||
}
|
||||
|
|
@ -873,6 +897,7 @@
|
|||
var getData = function() {
|
||||
dataProvider({
|
||||
context: context,
|
||||
$multi: $multi,
|
||||
response: {
|
||||
success: function(args) {
|
||||
$multi.find('.data-item').remove();
|
||||
|
|
|
|||
Loading…
Reference in New Issue