forked from MissionCriticalCloud/cloudstackOps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcloudstackopsbase.py
More file actions
87 lines (77 loc) · 2.88 KB
/
cloudstackopsbase.py
File metadata and controls
87 lines (77 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Copyright 2015, Schuberg Philis BV
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# CloudStackOps Base Class
# Remi Bergsma - rbergsma@schubergphilis.com
import os
import sys
import signal
import getopt
import ConfigParser
from os.path import expanduser
from random import choice
import logging
import urllib2
import time
import string
import random
import commands
from urlparse import urlparse
from prettytable import PrettyTable
import pprint
# Colored terminals
try:
from clint.textui import colored
except:
print "Error: Please install clint library to support color in the terminal:"
print " pip install clint"
sys.exit(1)
class CloudStackOpsBase(object):
# Init function
def __init__(self, debug=0, dryrun=0, force=0):
self.DEBUG = debug
self.DRYRUN = dryrun
self.FORCE = force
self.configProfileNameFullPath = ''
self.organization = ''
self.smtpserver = 'localhost'
self.mail_from = ''
self.errors_to = ''
self.configfile = os.getcwd() + '/config'
self.pp = pprint.PrettyPrinter(depth=6)
self.printWelcome()
signal.signal(signal.SIGINT, self.catch_ctrl_C)
def printWelcome(self):
pass
# Handle unwanted CTRL+C presses
def catch_ctrl_C(self, sig, frame):
print "Warning: do not interupt! If you really want to quit, use kill -9."
# Read config files
def readConfigFile(self):
# Read our own config file for some more settings
config = ConfigParser.RawConfigParser()
config.read(self.configfile)
try:
self.organization = config.get('cloudstackOps', 'organization')
self.smtpserver = config.get('mail', 'smtpserver')
self.mail_from = config.get('mail', 'mail_from')
self.errors_to = config.get('mail', 'errors_to')
except:
print "Error: Cannot read or parse CloudStackOps config file '" + self.configfile + "'"
print "Hint: Setup the local config file 'config', using 'config.sample' as a starting point. See documentation."
sys.exit(1)