diff --git a/src/forms.py b/src/forms.py index 75193a8..3b41bd7 100644 --- a/src/forms.py +++ b/src/forms.py @@ -7,7 +7,8 @@ # to labels. INFRAS = [ ('ec2', 'Amazon EC2'), - ('euca', 'Eucalyptus')] + ('euca', 'Eucalyptus'), + ('gce', 'Google Compute Engine')] # Deployment options. Tuples map form names to labels. DEPLOYS = [('cluster','Cluster'), @@ -73,26 +74,39 @@ class CommonFields(forms.Form): 'readonly':'cluster'})) admin_email = forms.EmailField(validators=[validate_email], max_length=40, - required=True, widget=forms.TextInput(attrs={'id':'email', - 'data-type':'email', 'name':"email", 'data-trigger':"change", - 'data-required':"true"})) + required=True, widget=forms.TextInput(attrs={ + 'id':'email', + 'data-type':'email', + 'name':"email", + 'data-trigger':"change", + 'data-required':"true"})) admin_pass = forms.CharField(widget=forms.PasswordInput(render_value=False, - attrs={'id':'admin_pass', 'name':"admin_pass", 'class': - 'required parsley-validate', 'data-minlength': '6', - 'data-required':"true"}), label="AppScale Admin Password", min_length=6, - required=True, ) + attrs={ + 'id':'admin_pass', + 'name':"admin_pass", + 'class': 'required parsley-validate', + 'data-minlength': '6', + 'data-required':"true" + }), label="AppScale Admin Password", min_length=6, required=True, ) root_pass = forms.CharField(widget=forms.PasswordInput(render_value=False, - attrs={'id':'root_pass', 'name':"root_pass", 'class': - 'required parsley-validate', 'data-minlength': '6', 'data-required': - "true"}), label="Virtual Machine Root Password", min_length=6, - required=True, ) + attrs={ + 'id':'root_pass', + 'name':"root_pass", + 'class': 'required parsley-validate', + 'data-minlength': '6', + 'data-required': "true" + }), label="Virtual Machine Root Password", min_length=6, required=True, ) pass_confirm = forms.CharField(widget=forms.PasswordInput(render_value=False, - attrs={'id':'pass_confirm', 'class': 'required parsley-validate', - 'data-equalto': '#admin_pass', 'name':'pass_confirm', 'data-minlength': - '6', 'data-required':"true"}), label="Confirm Password", min_length=6) + attrs={ + 'id':'pass_confirm', + 'class': 'required parsley-validate', + 'data-equalto': '#admin_pass', + 'name':'pass_confirm', 'data-minlength': '6', + 'data-required':"true" + }), label="Confirm Password", min_length=6) cloud_admin_pass = forms.CharField(widget=forms.PasswordInput( render_value=False, @@ -113,12 +127,21 @@ class CommonFields(forms.Form): label="Confirm Password", min_length=6) keyname = forms.CharField(min_length=4, max_length=24, required=True, - widget=forms.TextInput(attrs={'id':'keyname', 'name':"keyname", - 'data-trigger':"change", 'data-required':"true"})) + widget=forms.TextInput(attrs={ + 'id':'keyname', + 'name':"keyname", + 'data-trigger':"change", + 'data-required':"true" + })) ips_yaml = forms.CharField(label=("ips.yaml"), max_length=120, - widget=forms.Textarea(attrs={'id':'ips_yaml', 'name':"ips", - 'data-trigger':"change", 'data-required':"true", 'class': 'required'}), + widget=forms.Textarea(attrs={ + 'id':'ips_yaml', + 'name':"ips", + 'data-trigger':"change", + 'data-required':"true", + 'class': 'required' + }), required=True) ec2_euca_url = forms.CharField(label='Eucalyptus URL', @@ -135,3 +158,23 @@ class CommonFields(forms.Form): 'data-required': 'true', })) + #Form for JSON GCE credentials + gceCredentials = forms.CharField(max_length=100, widget=forms.TextInput( + attrs={ + 'placeholder': 'Paste your GCE JSON credentials', + 'id': 'gce-credentials', + 'data-required': 'true', + })) + + #Form for entering your project ID + gceProjectId = forms.CharField(max_length=100, widget=forms.TextInput(attrs={ + 'data-required': 'true', + 'id': 'gce-project-id', + })) + + #Form for naming your image + gceImageName = forms.CharField(max_length=100, widget=forms.TextInput(attrs={ + 'data-required': 'true', + 'id': 'gce-image-name', + })) + diff --git a/src/static/css/app.css b/src/static/css/app.css index f6cd957..f712cef 100644 --- a/src/static/css/app.css +++ b/src/static/css/app.css @@ -9,7 +9,7 @@ #root_pass, #admin_pass, #id_machine, #id_ec2_euca_url, #cloud_admin_pass, #cloud_pass_confirm, #pass_confirm, #keyname, #email, #id_key, #id_secret, #id_deploy_option1, #id_deploy_option2, -#dk_container_id_machine, #dk_container_infrastructure{ +#dk_container_id_machine, #dk_container_infrastructure, #gce-credentials, #gce-image-name, #gce-project-id{ width: 288px; } diff --git a/src/static/js/main.js b/src/static/js/main.js index eaad210..f7abfed 100644 --- a/src/static/js/main.js +++ b/src/static/js/main.js @@ -14,6 +14,31 @@ $(document).ready(function () { $('.box').hide(); $('#'+$(this).val()).show(); }); + +//Removes EC2/Euca fields and replaces them with the appropriate GCE fields + $('#infrastructure').change(function(){ + if($('#infrastructure').val() == 'gce'){ + $('#instance_type').hide(); + $('#access_key').hide(); + $('#secret_key').hide(); + $('#machine_type').hide(); + $('#url').hide(); + $('#gce_creds').show(); + $('#gce_project').show(); + $('#gce_image').show(); + } + else{ + $('#instance_type').show(); + $('#access_key').show(); + $('#secret_key').show(); + $('#machine_type').show(); + $('#url').show(); + $('#gce_creds').hide(); + $('#gce_project').hide(); + $('#gce_image').hide(); + } + }); + }); @@ -40,3 +65,4 @@ $("#amount").change(function () { var value = this.value.substring(); $("#slider").slider("value", parseInt(value)); }); + diff --git a/src/templates/base/home.html b/src/templates/base/home.html index 4681e15..8281b6b 100644 --- a/src/templates/base/home.html +++ b/src/templates/base/home.html @@ -64,6 +64,7 @@

AppsCake makes deploying AppScale a piece of cake!