Skip to content

Commit 31a52a3

Browse files
committed
Repo init
0 parents  commit 31a52a3

723 files changed

Lines changed: 148123 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*.pyc
2+
*.log
3+
*.idea/
4+
*.ova
5+

AutoDeployUI/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'''
2+
*********************************************************
3+
Copyright @ 2015 EMC Corporation All Rights Reserved
4+
*********************************************************
5+
'''

AutoDeployUI/models.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'''
2+
*********************************************************
3+
Copyright @ 2015 EMC Corporation All Rights Reserved
4+
*********************************************************
5+
'''
6+
7+
from django.db import models
8+
9+
class ESXi(models.Model):
10+
esxiIP = models.GenericIPAddressField(max_length=32, unique=True)
11+
username = models.CharField(max_length=32)
12+
password = models.CharField(max_length=32)
13+
14+
class Meta:
15+
ordering = ["id"]
16+
17+
def __unicode__(self):
18+
return u'%s %s %s' % (self.esxiIP, self.username, self.password)

AutoDeployUI/serializers.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
*********************************************************
3+
Copyright @ 2015 EMC Corporation All Rights Reserved
4+
*********************************************************
5+
'''
6+
7+
__author__ = 'wuy1'
8+
import datetime
9+
10+
from rest_framework import serializers
11+
from django.contrib.auth.models import User, Group
12+
from AutoDeployUI.models import ESXi
13+
14+
class ESXiSerializer(serializers.HyperlinkedModelSerializer):
15+
class Meta:
16+
model = ESXi
17+
fields = ('id', 'esxiIP', 'username', 'password')
18+
19+
class UserSerializer(serializers.HyperlinkedModelSerializer):
20+
class Meta:
21+
model = User
22+
fields = ('id', 'username', 'email', 'is_staff', 'is_superuser','is_active', 'last_login')
23+
24+
class GroupSerializer(serializers.HyperlinkedModelSerializer):
25+
class Meta:
26+
model = Group
27+
fields = ('id', 'name')
28+
29+
class NodeDeploySerializer(serializers.Serializer):
30+
datastore = serializers.CharField()
31+
power = serializers.CharField()
32+
type = serializers.CharField()
33+
duration = serializers.CharField()
34+
count = serializers.CharField()

AutoDeployUI/settings.py

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
'''
2+
*********************************************************
3+
Copyright @ 2015 EMC Corporation All Rights Reserved
4+
*********************************************************
5+
'''
6+
7+
"""
8+
Django settings for AutoDeployUI project.
9+
10+
Generated by 'django-admin startproject' using Django 1.8.3.
11+
12+
For more information on this file, see
13+
https://docs.djangoproject.com/en/1.8/topics/settings/
14+
15+
For the full list of settings and their values, see
16+
https://docs.djangoproject.com/en/1.8/ref/settings/
17+
"""
18+
19+
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
20+
import os
21+
from os import path
22+
23+
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
24+
25+
PROJECT_ROOT = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
26+
27+
28+
# Quick-start development settings - unsuitable for production
29+
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
30+
31+
# SECURITY WARNING: keep the secret key used in production secret!
32+
SECRET_KEY = 'ved(xc99@qz*#d^y2%*qaf9b0lp^36gk6v5531#(=rs++majc*'
33+
34+
# SECURITY WARNING: don't run with debug turned on in production!
35+
DEBUG = True
36+
TEMPLATE_DEBUG = DEBUG
37+
38+
ALLOWED_HOSTS = []
39+
40+
LOGIN_URL = '/login'
41+
42+
from django.core.urlresolvers import reverse_lazy
43+
# LOGIN_REDIRECT_URL setting refers to the URL to which the user will be redirected
44+
# after a successful login.
45+
LOGIN_REDIRECT_URL = reverse_lazy('home')
46+
47+
# Application definition
48+
49+
INSTALLED_APPS = (
50+
'django.contrib.admin',
51+
'django.contrib.auth',
52+
'django.contrib.contenttypes',
53+
'django.contrib.sessions',
54+
'django.contrib.messages',
55+
'django.contrib.staticfiles',
56+
'AutoDeployUI',
57+
'app',
58+
'rest_framework',
59+
'rest_framework_swagger',
60+
)
61+
62+
REST_FRAMEWORK = {
63+
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',)
64+
}
65+
66+
SWAGGER_SETTINGS = {
67+
'exclude_namespaces': [],
68+
'api_version': 'v1',
69+
'api_path': '/',
70+
'enabled_methods': [
71+
'get',
72+
'post',
73+
'put',
74+
'patch',
75+
'delete'
76+
],
77+
'api_key': '',
78+
'is_authenticated': False,
79+
'is_superuser': False,
80+
'permission_denied_handler': None,
81+
'resource_access_handler': None,
82+
'info': {
83+
'contact': '',
84+
'description': 'v1',
85+
'license': '',
86+
'licenseUrl': '',
87+
'termsOfServiceUrl': '',
88+
'title': 'vRackSystem APIs',
89+
},
90+
'doc_expansion': 'none',
91+
}
92+
93+
MIDDLEWARE_CLASSES = (
94+
'django.contrib.sessions.middleware.SessionMiddleware',
95+
'django.middleware.common.CommonMiddleware',
96+
'django.middleware.csrf.CsrfViewMiddleware',
97+
'django.contrib.auth.middleware.AuthenticationMiddleware',
98+
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
99+
'django.contrib.messages.middleware.MessageMiddleware',
100+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
101+
'django.middleware.security.SecurityMiddleware',
102+
)
103+
104+
ROOT_URLCONF = 'AutoDeployUI.urls'
105+
106+
TEMPLATES_ROOT = os.path.join(PROJECT_ROOT, 'app', 'templates').replace('\\', '/')
107+
108+
TEMPLATES = [
109+
{
110+
'BACKEND': 'django.template.backends.django.DjangoTemplates',
111+
'DIRS': [],
112+
'APP_DIRS': True,
113+
'OPTIONS': {
114+
'context_processors': [
115+
'django.template.context_processors.debug',
116+
'django.template.context_processors.request',
117+
'django.contrib.auth.context_processors.auth',
118+
'django.contrib.messages.context_processors.messages',
119+
],
120+
},
121+
},
122+
]
123+
124+
WSGI_APPLICATION = 'AutoDeployUI.wsgi.application'
125+
126+
127+
# Database
128+
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
129+
130+
DATABASES = {
131+
'default': {
132+
'ENGINE': 'django.db.backends.mysql',
133+
'NAME': 'AutoDeployUI',
134+
'USER': 'root',
135+
'PASSWORD': 'root',
136+
'HOST':'localhost',
137+
}
138+
}
139+
140+
141+
# Internationalization
142+
# https://docs.djangoproject.com/en/1.8/topics/i18n/
143+
144+
LANGUAGE_CODE = 'en-us'
145+
146+
TIME_ZONE = 'UTC'
147+
148+
USE_I18N = True
149+
150+
USE_L10N = True
151+
152+
USE_TZ = True
153+
154+
# Absolute path to the directory static files should be collected to.
155+
# Don't put anything in this directory yourself; store your static files
156+
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
157+
# Example: "/home/media/media.lawrence.com/static/"
158+
STATIC_ROOT = path.join(PROJECT_ROOT, 'static').replace('\\', '/')
159+
160+
# URL prefix for static files.
161+
# Example: "http://media.lawrence.com/static/"
162+
STATIC_URL = '/static/'
163+
164+
# Additional locations of static files
165+
STATICFILES_DIRS = (
166+
# Put strings here, like "/home/html/static" or "C:/www/django/static".
167+
# Always use forward slashes, even on Windows.
168+
# Don't forget to use absolute paths, not relative paths.
169+
)
170+
171+
# List of finder classes that know how to find static files in
172+
# various locations.
173+
STATICFILES_FINDERS = (
174+
'django.contrib.staticfiles.finders.FileSystemFinder',
175+
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
176+
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
177+
)
178+
179+
# List of callables that know how to import templates from various sources.
180+
TEMPLATE_LOADERS = (
181+
'django.template.loaders.filesystem.Loader',
182+
'django.template.loaders.app_directories.Loader',
183+
# 'django.template.loaders.eggs.Loader',
184+
)

AutoDeployUI/urls.py

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
'''
2+
*********************************************************
3+
Copyright @ 2015 EMC Corporation All Rights Reserved
4+
*********************************************************
5+
'''
6+
7+
"""AutoDeployUI URL Configuration
8+
9+
The `urlpatterns` list routes URLs to views. For more information please see:
10+
https://docs.djangoproject.com/en/1.8/topics/http/urls/
11+
Examples:
12+
Function views
13+
1. Add an import: from my_app import views
14+
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
15+
Class-based views
16+
1. Add an import: from other_app.views import Home
17+
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
18+
Including another URLconf
19+
1. Add an import: from blog import urls as blog_urls
20+
2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls))
21+
"""
22+
from datetime import datetime
23+
24+
from django.conf.urls import include, url
25+
from rest_framework.urlpatterns import format_suffix_patterns
26+
from app.view import views
27+
28+
from django.contrib import admin
29+
from app.module.forms import BootstrapAuthenticationForm
30+
31+
urlpatterns = [
32+
################################### Rest APIs ###############################################
33+
url(r'^api/v1/esxi/$', views.ESXiList.as_view(), name="esxi_list"),
34+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/$', views.ESXiDetail.as_view(), name="esxi_detail"),
35+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/getvms$', 'app.view.views.esxi_get_all_vms', name='esxi_get_all_vms'),
36+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/getvminfo$', 'app.view.views.esxi_get_vm_info', name='esxi_get_vm_info'),
37+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/poweronvm$', 'app.view.views.esxi_poweron_vm', name='esxi_poweron_vm'),
38+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/poweroffvm$', 'app.view.views.esxi_poweroff_vm', name='esxi_poweroff_vm'),
39+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/resetvm$', 'app.view.views.esxi_reset_vm', name='esxi_reset_vm'),
40+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/destroyvm$', 'app.view.views.esxi_destroy_vm', name='esxi_destroy_vm'),
41+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/hardware$', 'app.view.views.esxi_list_hardware', name='esxi_list_hardware'),
42+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/datastores$', 'app.view.views.esxi_datastore', name='esxi_get_datastore'),
43+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/networks$', 'app.view.views.esxi_network', name='esxi_get_network'),
44+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/deploy$', 'app.view.views.esxi_deploy', name='esxi_deploy'),
45+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/adddrive$', 'app.view.views.esxi_add_drive', name='esxi_add_drive'),
46+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/addnic$', 'app.view.views.esxi_add_nic', name='esxi_add_nic'),
47+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpduhostlist$', 'app.view.views.esxi_vpdu_host_config_list', name='esxi_vpdu_host_config_list'),
48+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdusetpduinfo$', 'app.view.views.esxi_vpdu_set_pdu_info', name='esxi_vpdu_set_pdu_info'),
49+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpduhostadd$', 'app.view.views.esxi_vpdu_host_config_add', name='esxi_vpdu_host_config_add'),
50+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpduhostdel$', 'app.view.views.esxi_vpdu_host_config_del', name='esxi_vpdu_host_config_del'),
51+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdumapadd$', 'app.view.views.esxi_vpdu_map_add', name='esxi_vpdu_map_add'),
52+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdumapupdate$', 'app.view.views.esxi_vpdu_map_update', name='esxi_vpdu_map_update'),
53+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdumaplist$', 'app.view.views.esxi_vpdu_map_list', name='esxi_vpdu_map_list'),
54+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdumapdelete$', 'app.view.views.esxi_vpdu_map_delete', name='esxi_vpdu_map_delete'),
55+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdupwdadd$', 'app.view.views.esxi_vpdu_pwd_add', name='esxi_vpdu_pwd_add'),
56+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdupwdlist$', 'app.view.views.esxi_vpdu_pwd_list', name='esxi_vpdu_pwd_list'),
57+
url(r'^api/v1/esxi/(?P<id>[0-9]+)/vpdurestart$', 'app.view.views.esxi_vpdu_restart', name='esxi_vpdu_restart'),
58+
59+
# url(r'^api/v1/users/$', views.UserList.as_view(), name="user_list"),
60+
# url(r'^api/v1/users/(?P<id>[0-9]+)/$', views.UserDetail.as_view(), name="user_detail"),
61+
# url(r'^api/v1/groups/$', views.GroupList.as_view(), name="group_list"),
62+
# url(r'^api/v1/groups/(?P<id>[0-9]+)/$', views.GroupDetail.as_view(), name="group_detail"),
63+
64+
url(r'^api-auth/', include('rest_framework.urls',namespace='rest_framework')),
65+
66+
url(r'^api/v1/ova/list$', 'app.view.views.list_ova', name='listova'),
67+
url(r'^api/v1/ova/upload$', 'app.view.views.upload_ova', name='uploadova'),
68+
69+
################################### Web Pages ###############################################
70+
# Home page:
71+
url(r'^home/$', 'app.view.index.home', name='home'),
72+
url(r'^$', 'app.view.index.index', name='index'),
73+
74+
# ESXi related pages:
75+
url(r'^esxi$', 'app.view.esxi.esxi', name='esxi'),
76+
url(r'^esxi/add$', 'app.view.esxi.esxiadd', name='esxiadd'),
77+
url(r'^esxi/update$', 'app.view.esxi.esxiupdate', name='esxiupdate'),
78+
url(r'^esxi/delete$', 'app.view.esxi.esxidelete', name='esxidelete'),
79+
# url(r'^esxi/deploy$', 'app.view.esxi.esxideploy', name='esxideploy'),
80+
81+
# KVM page
82+
url(r'^kvm$', 'app.view.kvm.kvm', name='kvm'),
83+
84+
# Docker page
85+
url(r'^docker$', 'app.view.docker.docker', name='docker'),
86+
87+
# vNode Deploy
88+
url(r'^vnode/deploy$', 'app.view.vnode.vnodedeploy', name='vnodedeploy'),
89+
url(r'^vnode/control$', 'app.view.vnode.vnodecontrol', name='vnodecontrol'),
90+
url(r'^vnode/uploadova', 'app.view.vnode.uploadova', name='uploadova'),
91+
92+
# vPDU
93+
url(r'^vpdu/basic$', 'app.view.vpdu.getbasic', name='vpdubasic'),
94+
url(r'^vpdu/esxihost$', 'app.view.vpdu.getesxihost', name='vpduesxi'),
95+
url(r'^vpdu/password$', 'app.view.vpdu.getpassword', name='vpdupassword'),
96+
url(r'^vpdu/mapping$', 'app.view.vpdu.getmapping', name='vpdumapping'),
97+
98+
# vRack Builder
99+
url(r'^vrackdeploy$', 'app.view.vrackdeploy.vrackdeploy', name='vrackdeploy'),
100+
101+
# vNode Customization
102+
url(r'^vnodecustom/adddrive$', 'app.view.vnodecustom.adddrive', name='adddrive'),
103+
url(r'^vnodecustom/addnic$', 'app.view.vnodecustom.addnic', name='addnic'),
104+
105+
# Support Page
106+
url(r'^support$', 'app.view.support.support', name='support'),
107+
108+
url(r'^login/$',
109+
'django.contrib.auth.views.login',
110+
{
111+
'template_name': 'app/login.html',
112+
'authentication_form': BootstrapAuthenticationForm,
113+
'extra_context':
114+
{
115+
'title': 'Log in',
116+
'year': datetime.now().year,
117+
}
118+
},
119+
name='login'),
120+
url(r'^logout$',
121+
'django.contrib.auth.views.logout',
122+
{
123+
'next_page': '/',
124+
},
125+
name='logout'),
126+
127+
# Uncomment the admin/doc line below to enable admin documentation:
128+
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
129+
130+
# Uncomment the next line to enable the admin:
131+
url(r'^admin/', include(admin.site.urls)),
132+
url(r'^docs/', include('rest_framework_swagger.urls')),
133+
]
134+
135+
urlpatterns = format_suffix_patterns(urlpatterns)

0 commit comments

Comments
 (0)