import NimbulaAPI
import cx_Oracle
class DBOperation:
def __init__(self):
pass
@staticmethod
def nimbula_api():
api = NimbulaAPI.NimbulaAPI()
return api
@staticmethod
def create_table_and_insert_data(ip, port, instance, username, password, insert_value):
create_table = """
CREATE TABLE dbaastable (
test_value VARCHAR2(50) NOT NULL
)"""
drop_table = """
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE dbaastable';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
"""
dsn_str = cx_Oracle.makedsn(ip, port, instance)
con = cx_Oracle.connect(user=username, password=password, dsn=dsn_str)
cursor = con.cursor()
cursor.execute(drop_table)
cursor.execute(create_table)
query_string = "INSERT INTO dbaastable(test_value) VALUES ('" + insert_value + "')"
# print query_string
cursor.execute(query_string)
con.commit()
cursor.execute("SELECT test_value FROM dbaastable")
result = cursor.fetchall()
con.close()
return result
def is_oracle_readable_and_writable(self, dbaas_instance):
username = 'system'
password = 'xxxxx'
port = '1521'
instance = 'ORCL'
insertvalue = 'test'
dbaas_ip = self.nimbula_api().get_instance_ip(dbaas_instance)
self.nimbula_api().permit_dbaas_access_seclist_if_not_permitted(dbaas_instance)
result = self.create_table_and_insert_data(dbaas_ip, port, instance, username, password, insertvalue)
print result
if insertvalue in result[0]:
print "get result success"
else:
raise Exception
def is_oracle_not_readable_and_writable(self, dbaas_instance):
username = 'system'
password = 'xxxx'
port = '1521'
instance = 'ORCL'
insertvalue = 'test'
try:
dbaas_ip = self.nimbula_api().get_instance_ip(dbaas_instance)
self.nimbula_api().permit_dbaas_access_seclist_if_not_permitted(dbaas_instance)
result = self.create_table_and_insert_data(dbaas_ip, port, instance, username, password, insertvalue)
print result
if insertvalue in result[0]:
print 'value in table'
raise Exception
else:
print "value not in table"
except:
raise Exception