Ejemplo n.º 1
0
def GitHub_Login_Page_State(code,
                            GITHUB_APP_ID,
                            GITHUB_APP_KEY,
                            GITHUB_REDIRECT_URI,
                            timeout=5,
                            verify=False):
    ''' Authorization Code cannot repeat '''
    Access_Token_Url = Splice(scheme="https",
                              domain="github.com",
                              path="/login/oauth/access_token",
                              query={
                                  "client_id": GITHUB_APP_ID,
                                  "client_secret": GITHUB_APP_KEY,
                                  "code": code,
                                  "redirect_uri": GITHUB_REDIRECT_URI
                              }).geturl
    data = requests.post(Access_Token_Url, timeout=timeout, verify=verify).text
    data = Parse_Access_Token(data)

    if "access_token" in data:
        access_token = data.get("access_token")
        User_Info_Url = Splice(scheme="https",
                               domain="api.github.com",
                               path="/user",
                               query={
                                   "access_token": access_token
                               }).geturl
        data = requests.get(User_Info_Url, timeout=timeout,
                            verify=verify).json()
        username = "******" + data.get("login")
        user_id = data.get("id")
        user_github = data.get("html_url")
        user_cname = data.get("name")
        user_avater = data.get("avatar_url")
        user_email = data.get("email")
        user_extra = "blog:%s, company:%s, location:%s" % (
            data.get("blog"), data.get("company"), data.get("location"))
        try:
            UserSQL = "INSERT INTO User (username, cname, email, avatar, time, github, extra) VALUES (%s, %s, %s, %s, %s, %s, %s)"
            mysql.insert(UserSQL, username, user_cname, user_email,
                         user_avater, How_Much_Time(), user_github, user_extra)
            OAuthSQL = "INSERT INTO OAuth (oauth_username, oauth_type, oauth_openid, oauth_access_token, oauth_expires) VALUES (%s, %s, %s, %s, %s)"
            mysql.insert(OAuthSQL, username, "GitHub", user_id, access_token,
                         How_Much_Time())
        except IntegrityError, e:
            logger.debug(e, exc_info=True)
            #Check if it has been registered
            CheckSQL = "SELECT oauth_username FROM OAuth WHERE oauth_username=%s"
            if mysql.get(CheckSQL, username):
                UpdateSQL = "UPDATE OAuth SET oauth_access_token=%s, oauth_expires=%s, oauth_openid=%s WHERE oauth_username=%s"
                mysql.update(UpdateSQL, access_token, How_Much_Time(), user_id,
                             username)
                #update user profile
                UpdateUserSQL = "UPDATE User SET cname=%s, avatar=%s, extra=%s WHERE username=%s"
                mysql.update(UpdateUserSQL, user_cname, user_avater,
                             user_extra, username)
                return {"username": username, "uid": user_id}
        except Exception, e:
            logger.error(e, exc_info=True)
            return False
Ejemplo n.º 2
0
    def _checkSwarmLeader(self, swarm):
        """ 查询swarm集群Leader """

        logger.info("check swarm %s leader, the request swarm manager is %s" %
                    (swarm.get("name"), swarm.get("manager")))
        if swarm:
            try:
                url = Splice(netloc=swarm.get("manager")[0],
                             port=self.port,
                             path='/nodes').geturl
                data = requests.get(url,
                                    timeout=self.timeout,
                                    verify=self.verify).json()
                if "message" in data:
                    raise TypeError(
                        "The response that first get leader is error, data is {}"
                        .format(data))
            except Exception, e:
                logger.warn(e, exc_info=True)
                try:
                    url = Splice(netloc=swarm.get("manager")[-1],
                                 port=self.port,
                                 path='/nodes').geturl
                    data = requests.get(url,
                                        timeout=self.timeout,
                                        verify=self.verify).json()
                except Exception, e:
                    logger.error(e, exc_info=True)
                    data = None
Ejemplo n.º 3
0
    def POST(self, swarmName, swarmIp):
        """ add a swarm cluster into current, check, pickle. """

        res = {"msg": None, "code": 0}
        swarmIp = swarmIp.strip()
        swarmName = swarmName.strip()
        logger.debug(
            "post a swarm cluster, name is %s, ip is %s, check ip is %s" %
            (swarmName, swarmIp, ip_check(swarmIp)))

        if not swarmName or not swarmIp or not ip_check(swarmIp):
            res.update(msg="POST: data params error", code=-1020)
        elif self.isMember(swarmName):
            res.update(msg="POST: swarm cluster already exists", code=-1021)
        else:
            #access node ip's info, and get all remote managers
            url = Splice(netloc=swarmIp, port=self.port, path='/info').geturl
            swarm = dict(name=swarmName)
            logger.info(
                "init a swarm cluter named %s, will get swarm ip info, that url is %s"
                % (swarmName, url))
            try:
                nodeinfo = requests.get(url,
                                        timeout=self.timeout,
                                        verify=self.verify).json()
                logger.debug("get swarm ip info, response is %s" % nodeinfo)
                swarm["manager"] = [
                    nodes["Addr"].split(":")[0]
                    for nodes in nodeinfo["Swarm"]["RemoteManagers"]
                ]
            except Exception, e:
                logger.error(e, exc_info=True)
                res.update(msg="POST: access the node ip has exception",
                           code=-1022)
            else:
Ejemplo n.º 4
0
def QQ_Login_Page_State(code,
                        QQ_APP_ID,
                        QQ_APP_KEY,
                        QQ_REDIRECT_URI,
                        timeout=5,
                        verify=False):
    ''' Authorization Code cannot repeat '''
    QQ_Access_Token_Url = Splice(scheme="https",
                                 domain="graph.qq.com",
                                 path="/oauth2.0/token",
                                 query={
                                     "grant_type": "authorization_code",
                                     "client_id": QQ_APP_ID,
                                     "client_secret": QQ_APP_KEY,
                                     "code": code,
                                     "state": "P.passport",
                                     "redirect_uri": QQ_REDIRECT_URI
                                 }).geturl
    access_token_data = requests.get(QQ_Access_Token_Url,
                                     timeout=timeout,
                                     verify=verify).text

    try:
        data = Parse_Access_Token(access_token_data)
    except Exception, e:
        logger.error(e, exc_info=True)
        data = Callback_Returned_To_Dict(access_token_data)
Ejemplo n.º 5
0
    def DELETE(self, serviceFlag):
        #delete a service

        res = {"msg": None, "code": 0}
        logger.info(serviceFlag)

        if not self.leader:
            res.update(msg="No active swarm", code=-1000)
            logger.info(res)
            return res

        if not serviceFlag:
            res.update(msg="no service id or name<%s>" % serviceFlag,
                       code=50100)
            logger.info(res)
            return res

        logger.info("delete service, check parameters pass")
        try:
            SwarmEngineServiceDeleteUrl = Splice(netloc=self.leader,
                                                 port=self.port,
                                                 path="/services/%s" %
                                                 serviceFlag).geturl
            SwarmEngineServiceDeleteRes = requests.delete(
                SwarmEngineServiceDeleteUrl,
                timeout=self.timeout,
                verify=self.verify)
            SwarmEngineServiceDeleteCode = SwarmEngineServiceDeleteRes.status_code
        except Exception, e:
            logger.error(e, exc_info=True)
            res.update(success=False,
                       code=50200,
                       msg="delete service<%s> fail" % serviceFlag)
Ejemplo n.º 6
0
    def _checkSwarmHealth(self, leader):
        """ 根据Leader查询某swarm集群是否健康 """

        state = []
        mnum = 0
        logger.info(
            "To determine whether the cluster is healthy, starting, swarm leader is %s"
            % leader)
        try:
            nodes = requests.get(Splice(netloc=leader,
                                        port=self.port,
                                        path='/nodes').geturl,
                                 timeout=self.timeout,
                                 verify=self.verify).json()
            logger.debug("check swarm health, swarm nodes length is %d" %
                         len(nodes))
            for node in nodes:
                if node['Spec'].get('Role') == 'manager':
                    mnum += 1
                    isHealth = True if node['Status'][
                        'State'] == 'ready' and node['Spec'].get(
                            'Availability') == 'active' and node.get(
                                'ManagerStatus', {}).get(
                                    'Reachability') == 'reachable' else False
                    if isHealth:
                        state.append(isHealth)
        except Exception, e:
            logger.warn(e, exc_info=True)
            return "ERROR"
Ejemplo n.º 7
0
    def _checkServiceTaskNode(self, leader, serviceId):
        """ 查询某service(ID)的实例节点 """

        url = Splice(netloc=leader, port=self.port, path='/tasks').geturl
        logger.info("Get service %s task, that url is %s" % (serviceId, url))
        data = requests.get(url,
                            params={
                                "filters":
                                json.dumps(
                                    {'desired-state': {
                                        'running': True
                                    }})
                            }).json()
        #data  = requests.get(url).json()
        nodes = [
            _['NodeID'] for _ in data if _['Status']['State'] == 'running'
            and _['ServiceID'] == serviceId
        ]
        ips = []
        for node in nodes:
            nodeinfo = self._checkSwarmNode(leader, node)
            ip = nodeinfo.get('ManagerStatus', {}).get(
                'Addr', '').split(':')[0] or nodeinfo['Spec'].get(
                    'Labels', {}).get('ipaddr')
            ips.append(ip)
        return {"ips": ips, "nodes": nodes}
Ejemplo n.º 8
0
def Get_Access_Token(code):
    ''' Authorization Code cannot repeat '''
    Get_Access_Token_Url = Splice(scheme="https",
                                  netloc="api.instagram.com",
                                  path="/oauth/access_token",
                                  query={
                                      "client_id": INSTAGRAM_APP_ID,
                                      "client_secret": INSTAGRAM_APP_KEY,
                                      "code": code,
                                      "redirect_uri": REDIRECT_URI
                                  }).geturl
    access_token_data = requests.post(Get_Access_Token_Url,
                                      timeout=timeout,
                                      verify=verify,
                                      proxies=proxies).json()
    """
    {
        "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
        "user": {
            "id": "1574083",
            "username": "******",
            "full_name": "Snoop Dogg",
            "profile_picture": "..."
        }
    }
    """

    if isinstance(access_token_data, dict):
        return access_token_data
    else:
        raise ServerError("Get Access Token Error with Authorization Code")
Ejemplo n.º 9
0
 def _checkSwarmNetwork(self, leader, networkId=None):
     """ 查询集群网络 """
     try:
         path    = "/networks/" + networkId if networkId else "/networks"
         NetUrl  = Splice(netloc=leader, port=self.port, path=path).geturl
         NetData = requests.get(NetUrl, timeout=self.timeout, verify=self.verify).json()
     except Exception,e:
         logger.error(e, exc_info=True)
Ejemplo n.º 10
0
    def _checkSwarmToken(self, leader):
        """ 根据Leader查询集群令牌 """

        try:
            swarm = requests.get(Splice(netloc=leader, port=self.port, path='/swarm').geturl, timeout=self.timeout, verify=self.verify).json()
            token = swarm.get('JoinTokens')
        except Exception,e:
            logger.warn(e, exc_info=True)
Ejemplo n.º 11
0
 def _checkSwarmNode(self, leader, node=None):
     """ 查询集群节点 """
     try:
         path     = "/nodes/" + node if node else "/nodes"
         NodeUrl  = Splice(netloc=leader, port=self.port, path=path).geturl
         NodeData = requests.get(NodeUrl, timeout=self.timeout, verify=self.verify).json()
     except Exception,e:
         logger.error(e, exc_info=True)
Ejemplo n.º 12
0
def GitHub_Login_Page_Url(GITHUB_APP_ID, GITHUB_REDIRECT_URI):
    ''' Redirect GitHub Landing Page URL '''
    return Splice(scheme="https",
                  domain="github.com",
                  path="/login/oauth/authorize",
                  query={
                      "client_id": GITHUB_APP_ID,
                      "redirect_uri": GITHUB_REDIRECT_URI
                  }).geturl
Ejemplo n.º 13
0
    def _checkSwarmNodeinfo(self, ip):
        """ 查询节点信息 """

        try:
            NodeUrl  = Splice(netloc=ip, port=self.port, path="/info").geturl
            NodeInfo = requests.get(NodeUrl, timeout=self.timeout, verify=self.verify).json()
        except Exception,e:
            logger.error(e, exc_info=True)
            return {}
Ejemplo n.º 14
0
def Get_User_Info(access_token, uid):
    User_Info_Url = Splice(scheme="https",
                           netloc="api.weibo.com",
                           path="/2/users/show.json",
                           query={
                               "access_token": access_token,
                               "uid": uid
                           }).geturl
    return requests.get(User_Info_Url, timeout=timeout, verify=verify).json()
Ejemplo n.º 15
0
def Get_Authorization_Code():
    ''' Redirect GitHub Landing Page URL '''
    return Splice(scheme="https",
                  netloc="github.com",
                  path="/login/oauth/authorize",
                  query={
                      "client_id": GITHUB_APP_ID,
                      "redirect_uri": REDIRECT_URI
                  }).geturl
Ejemplo n.º 16
0
def Get_User_Info(access_token):
    Get_User_Info_Url = Splice(scheme="https",
                               netloc="api.github.com",
                               path="/user",
                               query={
                                   "access_token": access_token
                               }).geturl
    return requests.get(Get_User_Info_Url, timeout=timeout,
                        verify=verify).json()
Ejemplo n.º 17
0
def Update_Access_Token(refresh_token):
    '''Update some required parameters for OAuth2.0 API calls'''
    Update_Access_Token_Url = Splice(scheme="https", netloc="graph.qq.com", path="/oauth2.0/token", query={"grant_type": "refresh_token", "client_id": QQ_APP_ID, "client_secret": QQ_APP_KEY, "refresh_token": refresh_token}).geturl
    access_token_data = requests.get(Update_Access_Token_Url, timeout=timeout, verify=verify).text

    try:
        data = Parse_Access_Token(access_token_data)
    except Exception,e:
        app.logger.error(e, exc_info=True)
        data = Callback_Returned_To_Dict(access_token_data)
Ejemplo n.º 18
0
def Weibo_Login_Page_Url(WEIBO_APP_ID, WEIBO_REDIRECT_URI):
    ''' Redirect Weibo Landing Page URL '''
    return Splice(scheme="https",
                  domain="api.weibo.com",
                  path="/oauth2/authorize",
                  query={
                      "response_type": "code",
                      "client_id": WEIBO_APP_ID,
                      "redirect_uri": WEIBO_REDIRECT_URI
                  }).geturl
Ejemplo n.º 19
0
def Get_Authorization_Code():
    ''' Redirect Weibo Landing Page URL '''
    return Splice(scheme="https",
                  netloc="api.weibo.com",
                  path="/oauth2/authorize",
                  query={
                      "response_type": "code",
                      "client_id": WEIBO_APP_ID,
                      "redirect_uri": REDIRECT_URI
                  }).geturl
Ejemplo n.º 20
0
def Get_Authorization_Code():
    ''' Redirect GitHub Landing Page URL '''
    return Splice(scheme="https",
                  netloc="api.instagram.com",
                  path="/oauth/authorize/",
                  query={
                      "client_id": INSTAGRAM_APP_ID,
                      "redirect_uri": REDIRECT_URI,
                      "response_type": "code"
                  }).geturl
Ejemplo n.º 21
0
def QQ_Login_Page_Url(QQ_APP_ID, QQ_REDIRECT_URI):
    ''' Redirect QQ Landing Page URL '''
    return Splice(scheme="https",
                  domain="graph.qq.com",
                  path="/oauth2.0/authorize",
                  query={
                      "response_type": "code",
                      "client_id": QQ_APP_ID,
                      "redirect_uri": QQ_REDIRECT_URI,
                      "scope": "get_user_info"
                  }).geturl
Ejemplo n.º 22
0
    def _checkSwarmManager(self, ip):
        """ 查询节点的Manager """

        url   = Splice(netloc=ip, port=self.port, path='/info').geturl
        logger.info("Get or Update swarm manager, that url is %s" %url)
        try:
            nodeinfo = requests.get(url, timeout=self.timeout, verify=self.verify).json()
            logger.debug("Get or Update swarm manager, response is %s" %nodeinfo)
            managers = [ nodes["Addr"].split(":")[0] for nodes in nodeinfo["Swarm"]["RemoteManagers"] ]
        except Exception,e:
            logger.error(e, exc_info=True)
            return []
Ejemplo n.º 23
0
def Get_User_Info(access_token):
    Get_User_Info_Url = Splice(scheme="https",
                               netloc="api.instagram.com",
                               path="/v1/users/self/",
                               query={
                                   "access_token": access_token
                               }).geturl
    return requests.get(Get_User_Info_Url,
                        timeout=timeout,
                        verify=verify,
                        proxies=proxies).json()
    """
Ejemplo n.º 24
0
def Get_Access_Token(code):
    ''' Authorization Code cannot repeat '''
    Access_Token_Url = Splice(scheme="https",
                              netloc="api.weibo.com",
                              path="/oauth2/access_token",
                              query={
                                  "grant_type": "authorization_code",
                                  "client_id": WEIBO_APP_ID,
                                  "client_secret": WEIBO_APP_KEY,
                                  "code": code,
                                  "redirect_uri": REDIRECT_URI
                              }).geturl
    return requests.post(Access_Token_Url, timeout=timeout,
                         verify=verify).json()
Ejemplo n.º 25
0
def Get_Access_Token(code):
    ''' Authorization Code cannot repeat '''
    Get_Access_Token_Url = Splice(scheme="https",
                                  netloc="github.com",
                                  path="/login/oauth/access_token",
                                  query={
                                      "client_id": GITHUB_APP_ID,
                                      "client_secret": GITHUB_APP_KEY,
                                      "code": code,
                                      "redirect_uri": REDIRECT_URI
                                  }).geturl
    access_token_data = requests.post(Get_Access_Token_Url,
                                      timeout=timeout,
                                      verify=verify).text

    data = Parse_Access_Token(access_token_data)

    #Should returned right data, such as {'access_token': '79D493208A237BAB3C9AE93FAD2798CE', 'expires_in': '7776000', 'refresh_token': '30AF0BD336324575029492BD2D1E134B'}
    if isinstance(data, dict):
        return data
    else:
        raise ServerError("Get Access Token Error with Authorization Code")
Ejemplo n.º 26
0
    def InitSwarm(self, AdvertiseAddr, ForceNewCluster=False):
        """ 初始化集群 """
        res = {"msg": None, "code": 0, "success": False}

        AdvertiseAddr = AdvertiseAddr.strip()
        ForceNewCluster = True if ForceNewCluster in ("true", "True",
                                                      True) else False

        url = Splice(netloc=AdvertiseAddr, port=self.port,
                     path='/swarm/init').geturl
        try:
            r = requests.post(url,
                              data=json.dumps({
                                  "ListenAddr":
                                  "0.0.0.0",
                                  "AdvertiseAddr":
                                  AdvertiseAddr,
                                  "ForceNewCluster":
                                  ForceNewCluster
                              }),
                              headers={"Content-Type": "application/json"})
        except Exception, e:
            logger.error(e, exc_info=True)
            res.update(msg="Node Error", code=-1001)
Ejemplo n.º 27
0
def Weibo_Login_Page_State(code,
                           WEIBO_APP_ID,
                           WEIBO_APP_KEY,
                           WEIBO_REDIRECT_URI,
                           timeout=5,
                           verify=False):
    ''' Authorization Code cannot repeat '''
    Access_Token_Url = Splice(scheme="https",
                              domain="api.weibo.com",
                              path="/oauth2/access_token",
                              query={
                                  "grant_type": "authorization_code",
                                  "client_id": WEIBO_APP_ID,
                                  "client_secret": WEIBO_APP_KEY,
                                  "code": code,
                                  "redirect_uri": WEIBO_REDIRECT_URI
                              }).geturl
    data = requests.post(Access_Token_Url, timeout=timeout,
                         verify=verify).json()
    if "access_token" in data:
        access_token = data.get("access_token")
        expires_in = data.get("expires_in")
        uid = requests.get(
            "https://api.weibo.com/2/account/get_uid.json?access_token=%s" %
            access_token,
            timeout=timeout,
            verify=verify).json().get("uid", data.get("uid"))
        User_Info_Url = Splice(scheme="https",
                               domain="api.weibo.com",
                               path="/2/users/show.json",
                               query={
                                   "access_token": access_token,
                                   "uid": uid
                               }).geturl
        data = requests.get(User_Info_Url, timeout=timeout,
                            verify=verify).json()
        logger.debug(data)
        username = "******" + access_token[4:13]
        user_cname = data.get("screen_name")
        user_avater = data.get("profile_image_url")
        user_weibo = "http://weibo.com/" + data.get("profile_url")
        user_extra = data.get("description")
        user_gender = u"男" if data.get("gender") == "m" else u"女"
        try:
            UserSQL = "INSERT INTO User (username, cname, avatar, time, weibo, gender, extra) VALUES (%s, %s, %s, %s, %s, %s, %s)"
            mysql.insert(UserSQL, username, user_cname, user_avater,
                         How_Much_Time(), user_weibo, user_gender, user_extra)
            OAuthSQL = "INSERT INTO OAuth (oauth_username, oauth_type, oauth_openid, oauth_access_token, oauth_expires) VALUES (%s, %s, %s, %s, %s)"
            mysql.insert(OAuthSQL, username, "Weibo", uid, access_token,
                         How_Much_Time(seconds=int(expires_in)))
        except IntegrityError, e:
            logger.debug(e, exc_info=True)
            #Check if it has been registered
            CheckSQL = "SELECT oauth_username FROM OAuth WHERE oauth_username=%s"
            if mysql.get(CheckSQL, username):
                UpdateSQL = "UPDATE OAuth SET oauth_access_token=%s, oauth_expires=%s, oauth_openid=%s WHERE oauth_username=%s"
                mysql.update(UpdateSQL, access_token,
                             How_Much_Time(seconds=int(expires_in)), uid,
                             username)
                #update user profile
                UpdateUserSQL = "UPDATE User SET cname=%s, avatar=%s, weibo=%s, gender=%s, extra=%s WHERE username=%s"
                mysql.update(UpdateUserSQL, user_cname, user_avater,
                             user_weibo, user_gender, user_extra, username)
                return {
                    "username": username,
                    "expires_in": expires_in,
                    "uid": uid
                }
        except Exception, e:
            logger.error(e, exc_info=True)
            return False
Ejemplo n.º 28
0
        data = Parse_Access_Token(access_token_data)
    except Exception, e:
        logger.error(e, exc_info=True)
        data = Callback_Returned_To_Dict(access_token_data)

    #Should returned right data, such as {'access_token': '79D493208A237BAB3C9AE93FAD2798CE', 'expires_in': '7776000', 'refresh_token': '30AF0BD336324575029492BD2D1E134B'}
    if "refresh_token" in data:
        #access_token = data.get("access_token")
        #expires_in   = data.get("expires_in")
        refresh_token = data.get("refresh_token")
        '''Update some required parameters for OAuth2.0 API calls'''
        Update_Access_Token_Url = Splice(scheme="https",
                                         domain="graph.qq.com",
                                         path="/oauth2.0/token",
                                         query={
                                             "grant_type": "refresh_token",
                                             "client_id": QQ_APP_ID,
                                             "client_secret": QQ_APP_KEY,
                                             "refresh_token": refresh_token
                                         }).geturl
        access_token_data = requests.get(Update_Access_Token_Url,
                                         timeout=timeout,
                                         verify=verify).text

        try:
            data = Parse_Access_Token(access_token_data)
        except Exception, e:
            logger.error(e, exc_info=True)
            data = Callback_Returned_To_Dict(access_token_data)

        if "access_token" in data:
Ejemplo n.º 29
0
    def GET(self, service=None, core=False, core_convert=False):

        res = {"msg": None, "code": 0, "data": ()}

        if self.leader:
            ServiceUrl = Splice(
                netloc=self.leader,
                port=self.port,
                path="/services/%s" % service).geturl if service else Splice(
                    netloc=self.leader, port=self.port,
                    path="/services").geturl
            logger.info(
                "Get service url is %s, core is %s, core_convert is %s" %
                (ServiceUrl, core, core_convert))

            try:
                r = requests.get(ServiceUrl,
                                 timeout=self.timeout,
                                 verify=self.verify)
                services = r.json()
                services = services if isinstance(services,
                                                  (list,
                                                   tuple)) else (services, )
                services_core = []
            except Exception, e:
                logger.error(e, exc_info=True)
                res.update(msg="Retrieve service fail", code=30000)
            else:
                if r.status_code == 404:
                    res.update(msg="No such service<%s>" % service,
                               data=[],
                               code=30010)
                    logger.info(res)
                    return res
                elif core == False:
                    res.update(data=services)

                elif core == True and core_convert == True:
                    try:
                        for i in services:
                            logger.debug(i)
                            i_ID = i.get("ID")
                            i_Name = i.get("Spec", {}).get("Name")
                            i_CreatedAt = timeChange(i.get("CreatedAt"))
                            i_UpdatedAt = timeChange(i.get("UpdatedAt"))
                            i_Labels = i.get("Spec", {}).get("Labels")
                            i_Image = i.get("Spec", {}).get(
                                "TaskTemplate", {}).get("ContainerSpec",
                                                        {}).get("Image")
                            i_Env = i.get("Spec",
                                          {}).get("TaskTemplate",
                                                  {}).get("ContainerSpec",
                                                          {}).get("Env")
                            #### start convert mount
                            i_Mounts = i.get("Spec", {}).get(
                                "TaskTemplate", {}).get("ContainerSpec",
                                                        {}).get("Mounts", [])
                            _i_Mounts = []
                            for _ in i_Mounts:
                                _i_Mounts.append(
                                    "%s:%s:%s:%s" %
                                    (_.get("Source"), _.get("Target"),
                                     _.get("ReadOnly", ""), _.get("Type", "")))
                            i_Mounts = _i_Mounts
                            #### end convert mount
                            i_Replicas = "global" if "Global" in i.get(
                                "Spec", {}).get("Mode", {}) else i.get(
                                    "Spec", {}).get("Mode", {}).get(
                                        "Replicated", {}).get("Replicas")
                            i_NetMode = i.get("Endpoint", {}).get(
                                "Spec",
                                {}).get("Mode") or i.get("Spec", {}).get(
                                    "EndpointSpec", {}).get("Mode")
                            #### start convert publish
                            i_NetPorts = i.get("Endpoint",
                                               {}).get("Spec",
                                                       {}).get("Ports", [])
                            _i_NetPorts = []
                            for _ in i_NetPorts:
                                _i_NetPorts.append(
                                    "%s:%s:%s" %
                                    (_.get("PublishedPort"),
                                     _.get("TargetPort"), _.get("Protocol")))
                            i_NetPorts = _i_NetPorts
                            #### end convert publish
                            #### start convert vip
                            i_NetVip = i.get("Endpoint",
                                             {}).get("VirtualIPs", [])
                            _i_NetVip = []
                            for _ in i_NetVip:
                                _i_NetVip.append(_.get("Addr"))
                            i_NetVip = _i_NetVip
                            #### end convert vip
                            i_Version = i.get("Version", {}).get("Index")
                            i_UpdateStatus = "%s(%s)" % (
                                i.get("UpdateStatus").get("State"),
                                timeChange(
                                    i.get("UpdateStatus").get("CompletedAt"))
                            ) if i.get("UpdateStatus").get("State") else None

                            services_core.append({
                                "ID": i_ID,
                                "Name": i_Name,
                                "CreatedAt": i_CreatedAt,
                                "UpdatedAt": i_UpdatedAt,
                                "Labels": i_Labels,
                                "Image": i_Image,
                                "Env": i_Env,
                                "Mounts": i_Mounts,
                                "Replicas": i_Replicas,
                                "NetMode": i_NetMode,
                                "NetPorts": i_NetPorts,
                                "NetVip": i_NetVip,
                                "Version": i_Version,
                                "UpdateStatus": i_UpdateStatus
                            })
                    except Exception, e:
                        logger.error(e, exc_info=True)
                    else:
                        res.update(data=services_core)

                elif core == True and core_convert == False:
                    try:
                        for i in services:
                            logger.debug(i)
                            services_core.append({
                                "ID":
                                i.get("ID"),
                                "Name":
                                i.get("Spec", {}).get("Name"),
                                "CreatedAt":
                                i.get("CreatedAt"),
                                "UpdatedAt":
                                i.get("UpdatedAt"),
                                "Labels":
                                i.get("Spec", {}).get("Labels"),
                                "Image":
                                i.get("Spec",
                                      {}).get("TaskTemplate",
                                              {}).get("ContainerSpec",
                                                      {}).get("Image"),
                                "Env":
                                i.get("Spec",
                                      {}).get("TaskTemplate",
                                              {}).get("ContainerSpec",
                                                      {}).get("Env"),
                                "Mounts":
                                i.get("Spec",
                                      {}).get("TaskTemplate",
                                              {}).get("ContainerSpec",
                                                      {}).get("Mounts", []),
                                "Replicas":
                                i.get("Spec", {}).get("Mode", {}).get(
                                    "Replicated", {}).get("Replicas")
                                or "global",
                                "NetMode":
                                i.get("Endpoint", {}).get("Spec",
                                                          {}).get("Mode")
                                or i.get("Spec", {}).get("EndpointSpec",
                                                         {}).get("Mode"),
                                "NetPorts":
                                i.get("Endpoint", {}).get("Spec",
                                                          {}).get("Ports"),
                                "NetVip":
                                i.get("Endpoint", {}).get("VirtualIPs"),
                                "Version":
                                i.get("Version", {}).get("Index"),
                                "UpdateStatus":
                                "%s(%s)" %
                                (i.get("UpdateStatus").get("State"),
                                 i.get("UpdateStatus").get("CompletedAt"))
                                if i.get("UpdateStatus").get("State") else None
                            })
                    except Exception, e:
                        logger.error(e, exc_info=True)
Ejemplo n.º 30
0
from SpliceURL import Splice, Split, Modify

if __name__ == "__main__":
    print Splice(netloc='http://127.0.0.1', query={"username": "******", "password": "******", "id": True}).geturl
    print Split("http://www.saintic.com/blog/?blogId=110&token=true&sso=false").do()
    print Modify("http://www.saintic.com/blog", path='show/', query={"blogId": 115, "Token": "abcdefghjqmnoprstuvwxyz"}).geturl