예제 #1
0
파일: server.py 프로젝트: yuvalk/kcli
 def delete_network(self, request, context):
     print("Handling delete_network call for:\n%s" % request)
     config = Kconfig()
     result = config.k.delete_network(request.network)
     response = kcli_pb2.result(**result)
     return response
예제 #2
0
파일: server.py 프로젝트: yuvalk/kcli
 def switch_host(self, request, context):
     print("Handling switch_host call for:\n%s" % request)
     baseconfig = Kbaseconfig()
     result = baseconfig.switch_host(request.client)
     response = kcli_pb2.result(**result)
     return response
예제 #3
0
파일: server.py 프로젝트: yuvalk/kcli
 def delete_image(self, request, context):
     print("Handling delete_image call for:\n%s" % request)
     config = Kconfig()
     result = config.k.delete_image(request.image)
     response = kcli_pb2.result(**result)
     return response
예제 #4
0
파일: server.py 프로젝트: yuvalk/kcli
 def delete_repo(self, request, context):
     print("Handing delete_profile call for:\n%s" % request)
     baseconfig = Kconfig()
     result = baseconfig.delete_repo(request.repo)
     response = kcli_pb2.result(**result)
     return response
예제 #5
0
파일: server.py 프로젝트: yuvalk/kcli
 def delete_plan(self, request, context):
     print("Handling delete_plan call for:\n%s" % request)
     config = Kconfig()
     result = config.plan(request.plan, delete=True)
     response = kcli_pb2.result(**result)
     return response
예제 #6
0
파일: server.py 프로젝트: yuvalk/kcli
 def delete_host(self, request, context):
     print("Handling delete_host call for:\n%s" % request)
     common.delete_host(request.client)
     result = {'result': 'success'}
     response = kcli_pb2.result(**result)
     return response
예제 #7
0
파일: server.py 프로젝트: yuvalk/kcli
 def create_vm(self, request, context):
     print("Handling create_vm call for:\n%s" % request)
     config = Kconfig()
     overrides = ast.literal_eval(
         request.overrides) if request.overrides != '' else {}
     profile = request.profile
     customprofile = ast.literal_eval(
         request.customprofile) if request.customprofile != '' else {}
     name = request.name
     if name == '':
         name = nameutils.get_random_name()
         if config.type in ['gcp', 'kubevirt']:
             name = name.replace('_', '-')
         if config.type != 'aws':
             pprint("Using %s as name of the vm" % name)
     if request.image != '':
         if request.image in config.profiles:
             pprint("Using %s as profile" % request.image)
         profile = request.image
     elif profile is not None:
         if profile.endswith('.yml'):
             profilefile = profile
             profile = None
             if not os.path.exists(profilefile):
                 error("Missing profile file %s" % profilefile)
                 result = {
                     'result': 'failure',
                     'reason': "Missing profile file %s" % profilefile
                 }
                 response = kcli_pb2.result(**result)
                 return response
             else:
                 with open(profilefile, 'r') as entries:
                     entries = yaml.safe_load(entries)
                     entrieskeys = list(entries.keys())
                     if len(entrieskeys) == 1:
                         profile = entrieskeys[0]
                         customprofile = entries[profile]
                         pprint("Using data from %s as profile" %
                                profilefile)
                     else:
                         error("Cant' parse %s as profile file" %
                               profilefile)
                         result = {
                             'result': 'failure',
                             'reason':
                             "Missing profile file %s" % profilefile
                         }
                         response = kcli_pb2.result(**result)
                         return response
     elif overrides:
         profile = 'kvirt'
         config.profiles[profile] = {}
     else:
         error(
             "You need to either provide a profile, an image or some parameters"
         )
         result = {
             'result':
             'failure',
             'reason':
             "You need to either provide a profile, an image or some parameters"
         }
         response = kcli_pb2.result(**result)
         response = kcli_pb2.result(**result)
         return response
     if request.vmfiles:
         for _fil in request.vmfiles:
             origin = _fil.origin
             content = _fil.content
             with open(origin, 'w') as f:
                 f.write(content)
     if request.ignitionfile != '':
         with open("%s.ign" % name, 'w') as f:
             f.write(request.ignitionfile)
     result = config.create_vm(name,
                               profile,
                               overrides=overrides,
                               customprofile=customprofile)
     result['vm'] = name
     response = kcli_pb2.result(**result)
     return response
예제 #8
0
파일: server.py 프로젝트: yuvalk/kcli
 def stop(self, request, context):
     print("Handling stop call for:\n%s" % request)
     config = Kconfig()
     result = config.k.stop(request.name)
     response = kcli_pb2.result(**result)
     return response